Экспорт куста в AVRO без имен столбцов в схеме - PullRequest
0 голосов
/ 04 октября 2018

Я попытался создать таблицу в Hive и хотел экспортировать ее в формате Avro.

В конце концов я хочу загрузить этот файл avro в Google BigQuery.По какой-то причине после экспорта схема AVRO не имеет правильных имен столбцов.

create table if not exists test_txt (id int, name varchar(40)); 
insert into test values (1, "AK");
insert overwrite directory "/tmp/test" stored as avro select * from test;
!sh hadoop fs -cat /tmp/test/*;

Выходные данные должны иметь имя столбца в виде id, name, но переводиться как _col0, _col1.

Objavro.schema▒ {"type": "record", "name": "baseRecord", "fields": [{ "name": "_ col0" , "type": [ "нуль", "INT"], "по умолчанию": нулевой}, { "имя": "_ col1" , "тип": [ "нуль", { "типа": "строка", "logicType": "varchar", "maxLength": 40}], "default": null}]} ▒Bh▒▒δ * @ ▒x ~ AK▒Bh▒▒δ*@▒x~

Спасибо,

AK

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Если двоичный файл avro необходимо экспортировать в один файл для дальнейшего приема (в моем контексте в BigQuery), то не используйте операторы переписывания hadoop cat / insert.Используйте avro-tools и присоединитесь к большому avro-файлу.

hadoop jar avro-tools-1.8.2.jar concat / tmp / test_avro / * big_avro_table.avro

0 голосов
/ 04 октября 2018

Похоже, это предполагаемое поведение при экспорте с предложением insert overwrite directory. Эта более старая тема об этой же проблеме.Он довольно старый, но я верю, что вывод все еще верен (по крайней мере, я не смог найти прямой способ сохранить имена столбцов).Для решения этой проблемы требуется несколько хаков, так что, возможно, стоит прочесть.

...