#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. Большое вам спасибо, я проверю это завтра на работе. надеюсь, никто еще не выполнил эту задачу 🙂