【发布时间】:2020-07-15 03:48:57
【问题描述】:
我正在寻找一个命令来为由 Avro 架构支持的 Hive 外部表添加列和更新架构。
这是我迄今为止尝试过的。
我有一个 Hive 外部表,其中包含使用此命令创建的 Avro 支持的架构 -
CREATE EXTERNAL TABLE `person_hourly`(
'personid' string COMMENT '',
'name' string COMMENT ''
)
PARTITIONED BY (
'partitiontime' string)
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
'hdfs://nameservice1/web/PersonData/'
TBLPROPERTIES (
'avro.schema.url'='hdfs:///schemas/PersonV1.avsc'
)
我想为此表添加其他列并更新架构。
alter table person_hourly ADD COLUMNS (lastname string ) SET TBLPROPERTIES ('avro.schema.url' = 'hdfs:///schemas/PersonV2.avsc')
但我不能这样做,因为我得到一个错误
FAILED: ParseException line 1:64 missing EOF at 'SET' near ')'
所以我尝试单独添加列,这有效,但我无法更新架构
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. at least one column must be specified for the table
【问题讨论】:
-
当您尝试使用
SET时,您是否离开ADD COLUMNS?如果有,为什么? -
我试图同时添加列和设置属性,因此我两者都有。我也尝试设置属性(没有添加列),但后来遇到了我提到的最后一个错误`至少一列必须是...`
-
这对我有用@cricket_007,谢谢你的链接。