首页 > 解决方案 > 如何确定用于特定列的 Parquet 编码?

问题描述

我有一些 Parquet 数据。我了解 Parquet 可以使用任意数量的编码来对列进行编码,例如字典编码或运行长度编码。

我想确定给定数据集中的给定列使用哪种编码 Parquet。

我尝试使用 parquet-cli 在我生成的一个简单的单列测试数据集上执行此操作:

$ parquet meta numbers.parquet/part-00000-7f0e3817-4021-49f4-b77c-e7e0ac495187-c000.snappy.parquet 

File path:  numbers.parquet/part-00000-7f0e3817-4021-49f4-b77c-e7e0ac495187-c000.snappy.parquet
Created by: parquet-mr version 1.10.1 (build a89df8f9932b6ef6633d06069e50c9b7970bebd1)
Properties:
                   org.apache.spark.version: 3.1.2
  org.apache.spark.sql.parquet.row.metadata: {"type":"struct","fields":[{"name":"id","type":"long","nullable":false,"metadata":{}}]}
Schema:
message spark_schema {
  required int64 id;
}


Row group 0:  count: 6  15.83 B records  start: 4  total: 95 B
--------------------------------------------------------------------------------
    type      encodings count     avg size   nulls   min / max
id  INT64     S   _     6         15.83 B    0       "0" / "5"

我不明白下面的符号是什么encodings意思。此数据集中有一个名为id我要探索的列。

它是如何编码的?是什么意思S _?此表中是否有关于“编码”的所有可能输出的描述?我无法通过parquet help metaParquet 文档或在 Parquet 文档中找到任何内容。

或者是否有其他方式我应该尝试获取这些信息?

标签: parquet

解决方案


推荐阅读