Hive 中的 'InputFormat, OutputFormat' 和 'Stored as' 有什么区别?

What is the difference between 'InputFormat, OutputFormat' & 'Stored as' in Hive?

我是大数据的新手,目前正在学习 Hive。我了解 Hive 中 InputFormat 和 OutputFormat 的概念作为 SerDe 的一部分。我还了解到 'Stored as' 用于以特定格式存储文件,就像 InputFormat 一样。 但我不明白使用 'InputFormat, OutputFormat' 和 'Stored as' 之间的显着区别是什么。

感谢任何帮助。

Hive 有很多关于如何存储数据的选项。您可以使用 external 存储,Hive 将只包装来自其他地方的一些数据,或者您可以从 hive warehouse[=29= 开始创建独立的 table ].输入和输出格式允许您指定这两种类型 table 的原始数据结构或数据将如何物理存储。从您的客户端,您将继续使用 sql 使用 table,但在低级别上,它可能是文本文件或序列文件或 hbase table 或其他一些数据结构。

InputFormat 和 OutputFormat - 允许您描述原始数据结构,以便 Hive 可以将其正确映射到 table 视图

SerDe - 表示 class,它执行从 table 视图到低级输入输出格式结构的实际数据转换,相反

通常你的过程是这样的:HDFS files --> InputFileFormat --> Deserializer --> Row object --> Serializer --> OutputFileFormat --> HDFS files

存储为 - 指定这样的存储格式,其中包括 Hivetable 中新的输入和输出格式

这些属性确实可以影响性能、整体大小、数据模式演化支持或启用 ACID 等功能。您可以按照本文中描述的步骤查看低级别的工作情况并获取有关最常用格式的一些一般信息 - https://oyermolenko.blog/2017/02/16/structuring-hadoop-data-through-hive-and-sql