Как импортировать данные из файла parquet в существующую таблицу Hadoop?

#hadoop #hive #parquet

#hadoop #улей #паркет

Вопрос:

Я создал несколько таблиц в своем кластере Hadoop, и у меня есть несколько паркетных таблиц с данными для их размещения. Как мне это сделать? Я хочу подчеркнуть, что у меня уже есть пустые таблицы, созданные с помощью некоторых команд DDL, и они также хранятся как паркет, поэтому мне не нужно создавать таблицы, только импортировать данные.

Ответ №1:

Вам следует воспользоваться функцией hive, которая позволяет использовать parquet для импорта данных. Даже если вы не хотите создавать новую таблицу. Я думаю, что подразумевается, что схема паркетной таблицы такая же, как и существующая пустая таблица. Если это не так, то ниже не будет работать как есть. Вам нужно будет выбрать нужные вам столбцы. Там

Здесь таблица, в которой у вас уже есть эта пустая, называется emptyTable расположенной myDatabase . Новые данные, которые вы хотите добавить, находятся /path/to/parquet/hdfs_path_of_parquet_file

 CREATE TABLE myDatabase.my_temp_table  LIKE PARQUET '/path/to/parquet/hdfs_path_of_parquet_file'  STORED AS PARQUET  LOCATION '/path/to/parquet/'; INSERT INTO myDatabase.emptyTable as   SELECT * from myDatabase.my_temp_table; DELETE TABLE myDatabase.my_temp_table;  

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

Другой вариант опять же предполагает, что схема для паркетной доски уже совпадает с определением таблицы, которое является пустым, которое у вас уже есть:

 ALTER TABLE myDatabase.emptyTable SET LOCATION '/path/to/parquet/';  

Технически это не создание новой таблицы, но требует изменения уже созданной таблицы, поэтому я не уверен, что это приемлемо.

Вы сказали, что это вещи из улья, поэтому я дал вам ответ из улья, но на самом деле, если emptyTable определение таблицы понимает паркет в точном формате, который у вас есть /path/to/parquet/hdfs_path_of_parquet_file , вы можете просто поместить этот файл в папку, определенную определением таблицы:

 show create table myDatabase.emptyTable;  

Это автоматически добавит данные в существующую таблицу. При условии, что определение таблицы соответствует. Hive-это схема для чтения, поэтому вам на самом деле не нужно «импортировать», только разрешить hive «интерпретировать».

Комментарии:

1. Большое вам спасибо, я проверю это завтра на работе. надеюсь, никто еще не выполнил эту задачу 🙂