Apache spark 理解拼花地板文件';使用拼花工具打印的s元数据信息“;meta";命令
我正在学习拼花文件的内部表示,因此我通过Apache拼花的Github、Google Dremel了解了定义和重复级别,并通过Twitter了解了更多关于拼花文件的信息 为了将我通过阅读获得的对其表示的理解与实际的拼花文件表示联系起来,我对一个示例拼花文件使用了Apache spark 理解拼花地板文件';使用拼花工具打印的s元数据信息“;meta";命令,apache-spark,parquet,dremel,Apache Spark,Parquet,Dremel,我正在学习拼花文件的内部表示,因此我通过Apache拼花的Github、Google Dremel了解了定义和重复级别,并通过Twitter了解了更多关于拼花文件的信息 为了将我通过阅读获得的对其表示的理解与实际的拼花文件表示联系起来,我对一个示例拼花文件使用了Parquet tools命令和meta选项,它打印了3个主要部分、标题、文件模式和行组的详细信息。我理解前两部分中的细节,但我无法完全理解行组部分中的所有细节 下面是我的问题 想知道更多关于做什么,FPO,VC(这看起来像是当前行组中所
Parquet tools
命令和meta
选项,它打印了3个主要部分、标题、文件模式和行组的详细信息。我理解前两部分中的细节,但我无法完全理解行组部分中的所有细节
下面是我的问题
做什么
,FPO
,VC
(这看起来像是当前行组中所有行的计数)的信息。它代表的扩展可以在拼花工具Github中找到,但我想了解更多细节。我了解什么是SZ
和ST
ENC
旁边,我看到了编码方案列表,如BIT\u-PACKED
,PLAIN
,RLE
。我理解它的具体含义,但我不理解为什么总是使用至少3种编码方案李>
RC
和总大小TS
旁边,我看到了偏移量OFFSET
。第一页总是4。它是如何计算的不幸的是,由于安全限制,我无法附加
parquet tools meta
命令的输出片段,但我希望不要过多地将我在每个问题中的意思可视化。此页面具有我发现的最佳描述:
因此,似乎tat DO、FPO只是偏移量信息,这些特定列的值从这里开始。VC=现有非空值的值计数
使用熊猫创建拼花地板文件
import pandas as pd
df = pd.DataFrame({
'w1': ["John", "Max", "Hans"],
'w2': ["Doe", "Mustermann", "Peter"],
'w3': ["New York", "Berlin", "München"],
'w4': [1990, 1980, 1970]})
df.to_parquet('./test_pandas.lz4.parquet', compression="lz4")
带有java-jar的parquet-tools.jar的Meta输出。/parquet-tools-1.10.1.jar Meta
file schema: schema
--------------------------------------------------------------------------------
w1: OPTIONAL BINARY O:UTF8 R:0 D:1
w2: OPTIONAL BINARY O:UTF8 R:0 D:1
w3: OPTIONAL BINARY O:UTF8 R:0 D:1
w4: OPTIONAL INT64 R:0 D:1
row group 1: RC:3 TS:440 OFFSET:4
--------------------------------------------------------------------------------
w1: BINARY LZ4 DO:4 FPO:51 SZ:98/79/0.81 VC:3 ENC:PLAIN_DICTIONARY,RLE,PLAIN ST:[min: Hans, max: Max, num_nulls: 0]
w2: BINARY LZ4 DO:165 FPO:219 SZ:106/87/0.82 VC:3 ENC:PLAIN_DICTIONARY,RLE,PLAIN ST:[min: Doe, max: Peter, num_nulls: 0]
w3: BINARY LZ4 DO:337 FPO:394 SZ:115/97/0.84 VC:3 ENC:PLAIN_DICTIONARY,RLE,PLAIN ST:[min: Berlin, max: New York, num_nulls: 0]
w4: INT64 LZ4 DO:524 FPO:565 SZ:121/109/0.90 VC:3 ENC:PLAIN_DICTIONARY,RLE,PLAIN ST:[min: 1970, max: 1990, num_nulls: 0]