Можем ли мы загрузить файл паркета в улей напрямую?
Я знаю, что мы можем загрузить файл parquet с помощью Spark SQL и с помощью Impala, но интересно, можем ли мы сделать то же самое с помощью Hive. Я читал много статей, но я все еще в замешательстве.
Проще говоря, у меня есть файл паркета, - говорят пользователи.паркет. Теперь я поражен здесь о том, как загружать / вставлять / импортировать данные от пользователей.паркет в улей (очевидно, в стол).
Пожалуйста, посоветуйте или укажите мне правильное направление, если я упускаю что-то очевидное.
Создание таблицы улья с помощью метаданные файла parquet
Https://phdata.io/examples-using-textfile-and-parquet-with-hive-and-impala/
4 ответа:
Сделать схему паркетный файл, используя паркетный инструменты, подробности уточняйте ссылке http://kitesdk.org/docs/0.17.1/labs/4-using-parquet-tools-solution.html
И построить таблицу, используя схему в верхней части файла, для получения подробной информации проверьте создать таблицу Hive для чтения файлов parquet из схемы parquet / avro
Получение схемы имеет решающее значение, так как вам придется сначала создать таблицу с соответствующей схемой в Hive, а затем указать ее на файлы parquet.
У меня была аналогичная проблема, когда у меня были данные в одной виртуальной машине и мне пришлось переместить их в другую. Вот мое пошаговое руководство:
Это сработало для меня, надеюсь, это поможет.
Узнайте об оригинальных файлах паркета (расположение и схема):
describe formatted users;
иshow create table users;
Последний сразу же даст вам схему, а также укажет вам местоположение HDFShdfs://hostname:port/apps/hive/warehouse/users
Узнайте о секционировании вашей таблицы
show partitions users;
Скопируйте файлы Parquet таблицы из HDFS в локальный каталог
hdfs dfs -copyToLocal /apps/hive/warehouse/users
Переместите их на другой кластер / виртуальную машину или туда, куда вы хотите их переместить
Создайте таблицу пользователей в пункте назначения
CREATE USERS ...
, используя ту же схемуCREATE TABLE users ( name string, ... ) PARTITIONED BY (...) STORED AS PARQUET;
Теперь переместите файлы Parquet в соответствующую папку (при необходимости узнайте о расположении файла Parquet). таблица, которую вы только что создали)
hdfs dfs -ls /apps/hive/warehouse/users/ hdfs dfs -copyFromLocal ../temp/* /apps/hive/warehouse/
Для каждого раздела вам нужно указать Hive на соответствующий подкаталог:
alter table users add partition (sign_up_date='19991231') location '/apps/hive/warehouse/users/sign_up_date=19991231';
(возможно, вы захотите сделать это с помощью скрипта bash)
Не знаю, немного ли это "хаки", но я использую zeppelin (поставляется с ambari). Вы можете просто сделать следующее в комбинации с spark2:
%spark2 import org.apache.spark.sql.SaveMode var df = spark.read.parquet("hdfs:///my_parquet_files/*.parquet"); df.write.mode(SaveMode.Overwrite).saveAsTable("imported_table")
Преимущество этого способа заключается в том, что вы также можете импортировать множество файлов parquet, даже если они имеют другую схему.
Вы можете попробовать это... Экспорт / импорт работает для всех типов форматов файлов, включая паркет в улье. Это общая концепция, вы можете настроить немного на основе ваших требований, таких как нагрузка от локального (или) через кластер
Примечание: Вы можете использовать жесткий код вместо $ при выполнении отдельных шагов, а также передавать" HDFS path"," Schema "и" tablename " в качестве параметра при запуске из сценария. Таким образом, вы можете экспортировать / импортировать неограниченное количество таблиц, просто передав параметр
- Шаг 1: hive-S-e " экспорт таблицы $schema_file1.$tbl_file1 to '$HDFS_DATA_PATH/$tbl_file1';" # -- выполнить из HDFS.
- Шаг 2: # --он содержит как данные, так и метаданные. zip it и scp к целевому кластеру
- Шаг 3: hive-S-e " импорт таблицы $schema_file1.$tbl_file1 из '$HDFS_DATA_PATH/$tbl_file1';" # -- первый импорт будет через ошибку, так как таблица не существует, но автоматически создает таблица
- Шаг 4: hive-S-e " импорт таблицы $schema_file1.$tbl_file1 из '$HDFS_DATA_PATH/$tbl_file1';" # -- Второй импорт будет импортировать данные без каких-либо ошибок в виде таблицы, доступной сейчас
Спасибо
Кумар