hadoop - hive 中的序列文件格式和 parquet 文件格式是什么?

标签 hadoop hive

您能用一个实时示例解释一下在哪里使用序列文件和 Parquet 文件吗?

最佳答案

序列文件

序列文件以二进制格式存储数据,其结构与 CSV 类似。与 CSV 一样,序列文件不会将元数据与数据一起存储,因此唯一的模式演变选项是附加新字段。然而,与 CSV 不同的是,序列文件支持 block 压缩。由于读取序列文件的复杂性,它们通常仅用于“运行中”数据,例如 MapReduce 作业序列中使用的中间数据存储。

Parquet 文件

Parquet 文件是另一种列式文件格式,源自 Hadoop 创建者 Doug Cutting 的 Trevni 项目。与 RC 和 ORC 一样,Parquet 具有压缩和查询性能优势,并且写入速度通常比非列文件格式慢。然而,与 RC 和 ORC 文件不同,Parquet serdes 支持有限的架构演变。在 Parquet 中,可以在结构的末尾添加新列。目前,Hive 和 Impala 能够查询新增列,但生态系统中的其他工具(例如 Hadoop Pig)可能面临挑战。 Parquet 受 Cloudera 支持并针对 Cloudera Impala 进行了优化。 Hadoop 生态系统的其余部分正在迅速添加原生 Parquet 支持。

关于 Hive 的 Parquet 文件支持的一点说明...Parquet 列名必须小写,这一点非常重要。如果您的 Parquet 文件包含混合大小写的列名,Hive 将无法读取该列,并将返回对具有空值的列的查询,并且不会记录任何错误。与 Hive 不同,Impala 处理混合大小写的列名称。当你遇到我时,这是一个真正令人困惑的问题

关于hadoop - hive 中的序列文件格式和 parquet 文件格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39646506/

相关文章:

hadoop - map 中的输入/输出流减少链接

Hadoop 多主集群设置

java - 如何返回 ObjectInspector 引用的对象

regex - Hive 的 RegexSerDe 没有给出正确的输出

hadoop - 如何在本地获取此输出

hadoop - 将数据加载到Hive/Impala

java - Hadoop hdfs,java客户端无法连接到hdfs

hadoop - 在将数据加载到配置单元中时从字段中删除周围的引号

hadoop - Hive/Tez作业无法开始

scala - 如何将Spark DataFrame插入Hive内表?