【问题标题】:Hive Alter External Table and Update SchemaHive 更改外部表和更新架构
【发布时间】: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,谢谢你的链接。

标签: hadoop hive


【解决方案1】:

ALTER TABLE 的数据定义语言 (DDL) 可以是 be found here

ALTER TABLE table_name SET TBLPROPERTIES table_properties;
 
table_properties:
  : (property_name = property_value, property_name = property_value, ... )

还有你的评论

我尝试单独添加列,效果很好

我认为这是你应该做的。添加列,然后设置属性

【讨论】:

    【解决方案2】:

    如果您修改 hdfs 中的架构,Hive 将检测到它。 Hive 在运行时读取架构,当您通过 avro.schema.url 使用 avsc 时,它不会保存任何架构信息

    问候, 赫克托

    【讨论】:

    • 是的.. 我不得不用一个新的模式文件覆盖现有的模式文件,基本上保持名称不变并且有效。我最初的问题是关于如何通过 Alter 命令更改架构,这对我仍然不起作用。
    【解决方案3】:

    下面的代码对我有用.. 您可以更改 avsc 文件中的架构定义(使用正确的格式),然后可以使用简单的 alter 命令设置更新架构文件的路径。

    ALTER TABLE table_name SET TBLPROPERTIES ("path of updated schema  avsc format file") 
    

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      相关资源
      最近更新 更多