Как проверить столбцы при добавлении раздела куста? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть таблица улья, созданная так: CREATE EXTERNAL TABLE test_db.test( region STRING, start_date STRING ) PARTITIONED BY ( id STRING ) STORED AS PARQUET.

У меня есть скрипт для добавления паркетных файлов:

ALTER TABLE test_db.test ADD IF NOT EXISTS PARTITION ( id = 'abc' ) LOCATION 's3://location/to/file'

Этот скрипт принимает пользовательский ввод для местоположения файла паркета. Я хочу убедиться, что столбцы файла паркета соответствуют столбцам таблицы, но кажется, что оператор ADD PARTITION всегда работает, даже если столбцы неверны. Как получить улей для проверки столбцов на ADD?

1 Ответ

0 голосов
/ 11 мая 2018

Улей schema-on-read. Когда вы добавляете раздел с указанием местоположения файла данных, Hive просто регистрирует его в своем метасреде. На этом этапе проверка фактических данных не выполняется. Это в отличие от традиционных реляционных баз данных, которые обеспечивают schema-on-write. Когда данные действительно прочитаны, Hive назначит схему базовым данным в соответствии с определением таблицы.

паркет-инструменты

Для проверки файла parquet вы можете использовать parquet-tools . Эта утилита может использоваться для проверки схемы в файле parquet. Вы можете включить этот шаг в свой сценарий и добавить раздел только в том случае, если схема файла parquet соответствует определению таблицы Hive.

Вот пример использования версии 1.6.0:

а. Загрузить JAR:

http://central.maven.org/maven2/com/twitter/parquet-tools/1.6.0/parquet-tools-1.6.0.jar

б. Проверить схему

hadoop jar parquet-tools-1.6.0.jar schema /hdfs/path/to/file.parquet
...