Я создал таблицу в схеме 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 не экспортируетсяа импортировали?