我知道每个hive版本都有一些保留关键字,不能用作列名。
但问题是我的数据来自json,我的列名是根据json值。
我无法修改数据。 还有其他选择吗?
这里是一行样本数据和表格。
>>> from functools import partial
>>> basetwo = partial(int, base=2)
>>> basetwo.__doc__ = 'Convert base 2 string to an int.'
>>> basetwo('10010')
18
答案 0 :(得分:2)
答案 1 :(得分:1)
有一个JIRA,已在Hive 0.13.0
版本中修复。
根据发布
引用标识符的默认行为已更改。现在在 语言级别中指定的任何列名称 back-ticks(`)按字面意思处理。这与标准sql一致 引用标识符的行为。在反向标记字符串中使用double 背叛逃脱。
启用带引号的标识符
在hive.support.quoted.identifiers
文件中将column
配置参数设置为hive-site.xml
,以在SQL列名中启用带引号的标识符。对于Hive 0.13
,有效值为none
和column
。
set hive.support.quoted.identifiers = column
e.g。
在以下示例中,x+y
和a?b
是新表的有效列名。
CREATE TABLE test (`x+y` String, `a?b` String);