【发布时间】:2019-07-16 10:45:17
【问题描述】:
我在 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。 使用旧数据库; 将表 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。
如果 .avsc 文件没有被导出和导入,那么新创建的 MyTable 从哪里获取架构?
【问题讨论】:
标签: apache-spark hadoop hive schema avro