Как команда импорта таблицы в Hive выбирает схему? - PullRequest
0 голосов
/ 22 февраля 2019

Я создал таблицу в схеме Avro. Вот сценарий создания.

CREATE TABLE `old_db.MyTable`(
  `fileld1` string COMMENT '', 
  `field2` string COMMENT '', 
  `field3` string COMMENT '')
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION
  '/data/gaurav/work/hive/old_db/MyTable'
TBLPROPERTIES (
  'COLUMN_STATS_ACCURATE'='false', 
  'avro.schema.url'='/data/gaurav/work/hive/old_db/SCHEMA/MyTable.avsc')

Я экспортирую эту таблицу в промежуточную базу данных staging_db.использовать old_db;экспортировать таблицу myTable в '/ data / gaurav / staging / hive / staging_db / MyTable'

Если перейти к пути /data/gaurav/staging/hive/staging_db/MyTable, она содержит две подкаталоги data/gaurav/staging/hive/staging_db/MyTable/data, в которых содержатся файлы .avro и data/gaurav/staging/hive/staging_db/MyTable/_metadata.

После этого я импортирую эту таблицу в другую целевую базу данных target_db

use target_db;
import table MyTable from '/data/gaurav/staging/hive/staging_db/MyTable'

после того, как импорт создан и заполнен данными. При экспорте и импорте расположения схемыостается неизменным, и хотя таблица создается в target_db, ее схема все еще указывает на старое местоположение, т.е. /data/gaurav/work/hive/old_db/SCHEMA/MyTable.avsc.

Откуда только что созданная MyTable извлекает схему, если файл .avsc не экспортируетсяа импортировали?

1 Ответ

0 голосов
/ 22 февраля 2019

В этом случае вы должны разрешить пользователю выбирать каталог местоположения в командной строке при запуске сценария.Это означает, что когда скрипт выполняется на сервере dev, то во время работы скрипта он должен запросить у пользователя место, где должна быть сохранена таблица.То же самое касается сценического окружения.Используйте команду $, чтобы позволить пользователю вводить местоположение во время выполнения.

...