Можно ли загрузить только выбранные столбцы из файла Avro в Hive? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть требование загрузить файл Avro в куст. Используя следующее для создания таблицы создать внешнюю таблицу tblName, сохраненную как местоположение avro 'hdfs: // host / pathToData' tblproperties ('avro.schema.url' = '/ hdfsPathTo / schema.avsc');

Я получаю сообщение об ошибке НАЙДЕНО НУЛЬ, ОЖИДАЕМАЯ СТРОКА во время выбора таблицы. Можно ли загрузить несколько столбцов и найти, какие данные столбцов вызывают эту ошибку?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если у вас уже есть файл AVRO, загрузите файл в HDFS в каталог по вашему выбору. Затем создайте внешнюю таблицу поверх каталога.

CREATE EXTERNAL TABLE external_table_name(col1 string, col2 string, col3 string ) STORED AS AVRO LOCATION '<HDFS location>';

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

CREATE TABLE internal_table_name(col2 string, col3 string) AS SELECT col2, col3 FROM external_table_name

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

Надеюсь, это поможет:)

0 голосов
/ 28 августа 2018

На самом деле вам сначала нужно создать внешнюю таблицу Hive, указывающую местоположение ваших файлов AVRO и использующую формат AvroSerDe. На этом этапе ничего не загружается. Внешняя таблица - это просто маска для файлов. Затем вы можете создать внутреннюю таблицу HIVE и загрузить данные (ожидаемые столбцы) из внешней.

...