Паркет значит три кодировки? - PullRequest
0 голосов
/ 29 августа 2018

После прочтения документа я знаю, что означает каждая отдельная кодировка. Но я не могу понять, почему один столбец имеет три кодировки.

Например:

ENC: BIT_PACKED, ОБЫЧНАЯ, RLE

ENC: BIT_PACKED, PLAIN_DICTIONARY, RLE

Ответы [ 2 ]

0 голосов
/ 18 марта 2019
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 - Кодировка значения.
0 голосов
/ 29 августа 2018

Это необходимо для того, чтобы в каждом столбце было по крайней мере три различных массива, которые сериализуются

  • уровни повторения: целочисленный массив, используемый для указания (приблизительно), есть ли у нас одно значение в строке или строка состоит из массива. Кодируется либо BIT_PACKED, либо RLE.
  • уровни определения: целочисленный массив для указания, является ли строка нулевой, и если да, то на каком уровне вложенности. Кодируется BIT_PACKED или RLE.
  • данные : фактические данные, которые хранятся. В зависимости от данных это относится к другим кодировкам, таким как PLAIN или RLE_DICTIONARY. Поскольку данные также можно разбить на несколько страниц, вы можете получить разные кодировки для каждой страницы. Например, если столбец закодирован в словаре, первые страницы будут PLAIN_DICTIONARY или RLE_DICTIONARY. Когда словарь становится слишком большим, реализация Parquet может переключаться для всех следующих страниц в другую кодировку, например, PLAIN.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...