10

我是 Bigdata 的新手,目前正在学习 Hive。我将 Hive 中 InputFormat 和 OutputFormat 的概念理解为 SerDe 的一部分。我还了解到“存储为”用于以特定格式存储文件,就像 InputFormat 一样。但我不明白使用“输入格式、输出格式”和“存储为”之间的显着区别是什么。

任何帮助表示赞赏。

4

1 回答 1

24

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

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

SerDe - 表示将数据从表视图实际转换为低级输入输出格式结构的类,反之亦然

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

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

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

于 2017-02-23T13:02:09.867 回答