hive中的import table命令如何获取模式?

vfhzx4xs  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(485)

我已经在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\u db。使用旧数据库;将表mytable导出到“/data/gaurav/staging/hive/staging\u 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\u db

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

导入后,将创建表并用数据填充。虽然导出和导入架构位置保持不变,并且在目标数据库中创建表时,其架构仍指向旧位置,即 /data/gaurav/work/hive/old_db/SCHEMA/MyTable.avsc .
如果没有导出和导入.avsc文件,新创建的mytable从何处获取架构?

cmssoen2

cmssoen21#

在这种情况下,您应该允许用户在运行脚本时在命令提示符上选择位置目录。这意味着当脚本在dev server上运行时,在运行脚本时,它应该询问用户保存表的位置。舞台环境也是如此。使用“$”命令允许用户在运行时输入位置。

相关问题