sql - Hive - 重命名与数据类型同名的字段

标签 sql hadoop hive rename

我有一个这样的 Hive 表:

CREATE TABLE mytest (name int, timestamp bigint, donation int);

我正在使用 Hive 0.12。注意字段“时间戳”。顺便说一句,Hive 0.12+ 引入了一种名为 timestamp 的新数据类型。假设我想将此字段重命名为 time_stamp

我试过这些:

  1. ALTER TABLE mytest CHANGE timestamp time_stamp BIGINT;
  2. ALTER TABLE mytest CHANGE COLUMN timestamp time_stamp BIGINT;
  3. ALTER TABLE mytest CHANGE [timestamp] time_stamp BIGINT;
  4. ALTER TABLE mytest CHANGE `timestamp` time_stamp BIGINT;

但是,它们都给我以下错误:

FAILED: ParseException line 1:38 mismatched input 'CHANGE' expecting KW_EXCHANGE near 'mytest' in alter exchange partition

我非常确定这是因为我的字段名称与数据类型名称相同。如何更改 mytest 的架构 而无需 执行以下操作?

CREATE mytest_cpy AS SELECT mytest.name, mytest.timestamp AS time_stamp, 
mytest.donation FROM mytest; 

DROP TABLE mytest; 

ALTER TABLE mytest_cpy RENAME TO mytest;

谢谢!任何/所有帮助表示赞赏!

最佳答案

对任何不常用的列名称使用反引号,这些名称要么包含奇怪的符号,要么与数据类型相同。这适用于 Hive 0.14:

ALTER TABLE mytest CHANGE COLUMN `timestamp` time_stamp BIGINT;

关于sql - Hive - 重命名与数据类型同名的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416733/

相关文章:

hive - 使用 Redshift Spectrum 查询 Hive View

hadoop - 为什么一个 pig/Hive 作业需要多个 MapReduce 作业?

sql - 如何在带有 JOIN 的查询中使用 WITH (NOLOCK)

MySql 取group by中的最大值

sql - Azure 数据工厂 - SQL 到嵌套 JSON

hadoop - hadoop中单个文件的用户访问频率

hadoop - 无法查询/选择通过Spark SQL插入的数据

mysql - 从两个表中选择并总是从一个表中返回

hadoop - 在 YARN 上启动的 h2o 不起作用

Hive Sql 从表中动态获取空列计数