实木复合地板的三种编码方式?

时间:2018-08-29 03:10:15

标签: parquet

阅读document之后,我知道每种编码的含义。 但是我不明白为什么一列有三种编码。

例如:

ENC:BIT_PACKED,PLAIN,RLE

ENC:BIT_PACKED,PLAIN_DICTIONARY,RLE

2 个答案:

答案 0 :(得分:1)

这必须确保每一列至少具有三个不同的序列化数组。

  • 重复级别:整数数组,用于(大致)指定一行中是否有单个值,或者该行是否包含数组。 BIT_PACKEDRLE编码。
  • 定义级别:整数数组,用于指定行是否为null,如果为null,则指定为哪个嵌套级别。 BIT_PACKEDRLE编码。
  • 数据:存储的实际数据。根据数据的不同,它是PLAINRLE_DICTIONARY等其他编码中的一种。由于数据也可以分为多个页面,因此每个页面可能会获得不同的编码。例如,当一列经过字典编码时,第一页将是PLAIN_DICTIONARYRLE_DICTIONARY。当字典过大时,Parquet实现可能会为所有后续页面切换到不同的编码,例如PLAIN

答案 1 :(得分:0)

row group 0 
--------------------------------------------------------------------------------
x:  DOUBLE SNAPPY DO:0 FPO:4 SZ:1632/31635/19.38 VC:70000 ENC:RLE,BIT_PACKED,PLAIN_DICTIONARY ST:[min: 1.0, max: 5.0, num_nulls: 10000]
y:  BINARY SNAPPY DO:0 FPO:1636 SZ:864/16573/19.18 VC:70000 ENC:RLE,BIT_PACKED,PLAIN_DICTIONARY ST:[min: a, max: é, num_nulls: 10000]
z:  DOUBLE SNAPPY DO:0 FPO:2500 SZ:560097/560067/1.00 VC:70000 ENC:PLAIN,BIT_PACKED ST:[min: 2.0828331581679294E-7, max: 0.9999892375625329, num_nulls: 0]

    x TV=70000 RL=0 DL=1 DS: 5 DE:PLAIN_DICTIONARY
    ----------------------------------------------------------------------------
    page 0:                   DLE:RLE RLE:BIT_PACKED VLE:PLAIN_DICTIONARY ST:[min: 1.0, max: 5.0, num_nulls: 10000] SZ:31514 VC:70000

我猜想ENC:BIT_PACKED,PLAIN_DICTIONARY,RLE只是行组中某个列块中所有页面中使用的所有编码(重复级别,定义级别,数据)的集合。不确定是否已订购。

数据编码可能是您感兴趣的信息。您可以从页面级别VLE:PLAIN_DICTIONARY或列块级别DS: 5 DE:PLAIN_DICTIONARY看到,这意味着字典有5个键

  • DLE-定义级别的编码。
  • RLE-重复级别编码。
  • VLE-值编码。