Загрузка данных из HDFS в Kudu

Я пытаюсь загрузить данные в таблицу Kudu, но получаю странный результат.

В консоли Impala я создал внешнюю таблицу из четырех файлов HDFS, импортированных Sqoop:

drop table if exists hdfs_datedim;
create external table hdfs_datedim
( ... )
row format
 delimited fields terminated by ','
location '/user/me/DATEDIM';

SELECT COUNT(*) говорит мне, что присутствует множество строк. Данные выглядят хорошими при запросе.

Я использую стандартный выбор в, чтобы скопировать результаты

INSERT INTO impala_kudu.DATEDIM
SELECT * FROM hdfs_datedim;

SELECT COUNT(*) говорит мне, что impala_kudu.DATEDIM имеет четыре строки (количество файлов в HDFS, а не количество строк в таблице.

Есть идеи?

3 ответа

Решение

Данные, созданные sqoop, находились под обложками и представляли собой последовательность плохо отформатированных CSV-файлов. Импортировать не удалось без ошибки из-за данных в плоском файле. Не упустите форматы даты и текстовые строки с разделителями, встроенными в строку.

В настоящее время Sqoop еще не поддерживает Kudu. Вы можете импортировать в HDFS, а затем использовать Impala для записи данных в Kudu.

Если у вас есть данные в HDFS в формате (csv/avro/parquet), то вы можете использовать следующую команду для импорта файлов в таблицу Kudu.

Пререквизиты: куду баночка с совместимой версией (1.6 или выше)

spark2-submit  --master yarn/local  --class org.apache.kudu.spark.tools.ImportExportFiles <path of kudu jar>/kudu-spark2-tools_2.11-1.6.0.jar --operation=import --format=<parquet/avro/csv> --master-addrs=<kudu master host>:<port number>  --path=<hdfs path for data> --table-name=impala::<table name>
Другие вопросы по тегам