Hive 如何重命名自动命名列

Hive 如何重命名自动命名列,hive,alter-table,Hive,Alter Table,我使用CTAS创建了一个表,现在它有了一个自动生成的名称(即,\u c0)。我无法使用经典的ALTER TABLE CHANGE\u c0 new\u name字符串对其进行重命名。我该如何重命名它 表格创建: CREATE TABLE my_table AS SELECT my_udf(col_1) FROM other_table ; my\u表现在包含一列:\u c0 尝试更改列名: ALTER TABLE my_table CHANGE _c0 my_col STRING; 这导致:

我使用CTAS创建了一个表,现在它有了一个自动生成的名称(即,
\u c0
)。我无法使用经典的
ALTER TABLE CHANGE\u c0 new\u name字符串
对其进行重命名。我该如何重命名它

表格创建:

CREATE TABLE my_table AS
SELECT my_udf(col_1)
FROM other_table
;
my\u表
现在包含一列:
\u c0

尝试更改列名:

ALTER TABLE my_table CHANGE _c0 my_col STRING;
这导致:

Error while compiling statement: FAILED: ParseException line 1:71 cannot recognize input near '_c0' 'my_col' 'STRING' in rename column name

关键在于正确地转义
\u c0

ALTER TABLE my_table CHANGE `_c0` my_col STRING;

这是正确的

配置单元将以
\u c
开头的名称视为内部名称,用户无法直接访问这些名称。当您运行
解释一些查询时,您将看到用法
\u col0
或类似内容

一种解决方法是用反引号将列名括起来。或者只为使用CTA创建的每个列指定一个有效别名,这样就不需要
alter

CREATE TABLE my_table AS
SELECT my_udf(col_1) AS my_col
FROM other_table
;