我正在尋找一個命令來爲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'上留下了字符?如果是這樣,爲什麼? –
我試圖添加列和設置屬性,因此我有兩個在那裏。我也嘗試設置屬性(沒有添加列),但後來跑到我提到的最後一個錯誤 '至少一列必須是......' –
你不應該需要列。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTableProperties –