使用不同的定义重新生成配置单元表



我想构建一个自动系统来帮助映射Hive表。我有一个带有元数据的SQL表:tableID,fieldName,字段类型,description,lastUpdated。我想自动更新我的表-

where lastUpdate=CURDATE() - INTERVAL '1' DAY

但我不知道做了什么更改——它可以是表中的一个新列,也可以是更改的列名,甚至是描述更新。当一个表已经存在时,有没有办法重新"定义"它?我想做的所有更改都将同时执行(所有更改类型)?

例如,我有一个定义如下的表:

create external table IF NOT EXISTS tableA (`a` string, `b` int, `c` int) PARTITIONED BY (dt date) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' STORED AS TEXTFILE LOCATION 'File/Path';

变化是列"b"的类型现在是"字符串"。有没有一个(通用的)更新/更改查询我可以写:

*SomeCommand* tableA (`a` string, `b` string, `c` int)

我的专栏会更新吗?

如果我有一个新的列-d,类型:float,也是如此。

*SomeCommand* tableA (`a` string, `b` string, `c` int, `d` float)

我需要一个可以包含这些选项的命令。或者,如果你有另一个好主意,我会非常感激…

谢谢!

您可以使用ALTER TABLE REPLACE COLUMNS。它完全符合你的要求,

它将同时替换所有列。看见https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#语言手册DDL添加/替换列

相关内容

  • 没有找到相关文章

最新更新