'Hive中InputFormat、OutputFormat和Stored as'的区别是什么?

11

我是新手,正在学习大数据和Hive。作为SerDe的一部分,我理解了在Hive中InputFormat和OutputFormat的概念。我也明白'Stored as'用于将文件以特定格式存储,就像InputFormat一样。

但我不明白使用'InputFormat, OutputFormat'和'Stored as'之间的显著区别。

感谢任何帮助。

1个回答

26
Hive有很多选项可以存储数据。您可以使用外部存储,其中Hive只需包装其他地方的一些数据,也可以从头开始在Hive仓库中创建独立表格。输入和输出格式允许您指定这两种类型表格的原始数据结构或数据将如何物理存储。从客户端方面,您将继续使用SQL处理表格,但在低级别,它可能是文本文件、序列文件、HBase表格或其他某种数据结构。 InputFormat和OutputFormat - 允许您描述原始数据结构,以便Hive能够正确地将其映射到表格视图。 SerDe - 表示执行实际翻译数据从表格视图到低级输入输出格式结构和相反的类。
通常,您的流程如下所示:HDFS文件 --> InputFileFormat --> Deserializer --> Row对象 --> Serializer --> OutputFileFormat --> HDFS文件 Stored as - 指定诸如输入和输出格式之类的存储格式,用于您在Hive中的新表格。
这些属性确实会影响性能,整体大小,数据架构演进支持或启用ACID等功能。您可以按照本文中描述的步骤查看低级别上的工作情况,并获取有关最常用格式的一般信息-https://oyermolenko.blog/2017/02/16/structuring-hadoop-data-through-hive-and-sql

我已经阅读了您提供的信息。现在我很清楚了。感谢您的时间。 - Metadata
这是一个非常清晰的答案 - 希望官方文档也能以这种方式解释!非常感谢。 - Abhinandan Dubey
1
@AbhinandanDubey 谢谢你的反馈。我完全同意你关于文档的观点,不幸的是这个问题存在于所有大数据解决方案中。 - Alex
@Alex 我可以使用不同的InputFormat和OutputFormat吗?例如,XML输入格式和JSON输出格式? - Bala
2
@Bala 不认为这会起作用。输入和输出格式针对单个实体 - 表格。您无法在同一文件中读取XML数据并编写Json数据。两种格式都应该保持同步的逻辑以便使用该文件。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接