Паркет бинарный UTF8 в виде нити на улье - PullRequest
0 голосов
/ 12 ноября 2018

Существует файл паркета со столбцом binary (UTF8) с именем abc.
Можно ли создать в кусте таблицу external, которая будет содержать тот же столбец abc, но приведенный к string?

Структура паркетного файла:

$ parquet-tools schema ~/Downloads/dataset.gz.parquet
message spark_schema {
  optional binary abc (UTF8);
}

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Существует три различных типа:

  • Существует схема SQL для таблицы в Hive. Каждый столбец имеет тип, например STRING или DECIMAL. Каждая таблица (или раздел в случае, если это разделенная таблица) состоит из нескольких файлов, которые должны быть одного формата, например PLAINTEXT, AVRO или PARQUET.
  • Каждый из отдельных файлов также будет иметь информацию о типе (кроме PLAINTEXT). В случае с паркетом это означает два дополнительных уровня:
    • Физический тип описывает размер хранилища, например INT32, BYTE_ARRAY или FIXED_LEN_BYTE_ARRAY.
    • Логический тип сообщает приложениям, как интерпретировать данные, например, UTF8 или DECIMAL.

Тип столбца STRING Hive сохраняется как физический тип BYTE_ARRAY (называемый двоичным в определениях схемы Паркет) с аннотацией логического типа UTF8.

0 голосов
/ 13 ноября 2018

Видимо, вы можете просто указать string в качестве типа столбца, и об этом позаботятся.

CREATE EXTERNAL TABLE `dataset`(  
    `abc` string)                                
  STORED AS parquet
  LOCATION                                            
    '...';
...