小编Baa*_*ali的帖子

parquet 如何确定使用哪种编码?

语境:

  • 我有两个相同的数据集(例如左数据集和右数据集),每个数据集中有 112 个镶木地板文件。
  • 这些镶木地板文件是使用 Hive 通过转换分隔的平面文件创建的。
  • 用于创建分隔平面文件的过程在左进程和右进程之间略有不同。
  • 我注意到两个数据集之间存在显着的大小差异,即使它们的内容完全相同。左侧数据集为 400GB,右侧数据集为 420GB。
  • 当我使用 parquet-tools 检查 Parquet 模式时,我注意到左右数据集使用了不同的编码,如下所示(针对一列):

左边:

column_a:  INT64 SNAPPY DO:0 FPO:4 SZ:5179987/6161135/1.19 VC:770100 ENC:PLAIN,RLE,BIT_PACKED
Run Code Online (Sandbox Code Playgroud)

正确的:

column_a:  INT64 SNAPPY DO:0 FPO:4 SZ:3040269/5671813/1.87 VC:782499 ENC:BIT_PACKED,PLAIN,RLE,PLAIN_DICTIONARY
Run Code Online (Sandbox Code Playgroud)

我的问题:

parquet 如何确定要使用的编码类型以及什么可能使 parquet 选择不同的编码?我们可以使用 Hive / Spark 配置来控制它吗?

hadoop hive apache-spark parquet

7
推荐指数
1
解决办法
5524
查看次数

标签 统计

apache-spark ×1

hadoop ×1

hive ×1

parquet ×1