温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
Fayson的github:https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.Hive的关键字
Hive有一些保留的关键字,我们在执行一些语句时,不能将这些关键字作为标识符(Identifier),比如建表语句的表名或者字段名,以下我们具体看看什么是Hive中的Identifier。
An Identifier can be a:
tableName
columnName
select expr alias
lateral view aliases
database name
view name
subquery alias
function name
ptf argument identifier
index name
property name for: db,tbl,partition…
fileFormat
role name
privilege name
principal name
macro name
hint name
window name
参考:
https://issues.apache.org/jira/secure/attachment/12618321/QuotedIdentifier.html
在Apache的Hive官网有关键字的列表,不同的Hive版本有一些区别。如下:
参考:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Keywords,Non-reservedKeywordsandReservedKeywords
2.CDH的Hive关键字测试
Fayson的测试环境是CDH5.13.1,Hive为1.1,以下我们以“DATE”关键字为例,做一下简单的测试。
1.分别创建字段为DATE的表test_keywords,以及表名为DATE的表。
可以看到都创建成功,Fayson并没有做任何额外的设置,也没有加倒引号。
2.向两个表分别插入数据。
3.进行查询测试
4.使用Impala进行查询测试
可以发现Impala对test_keywords表select *正常,select那个DATE字段报错。对于DATE表查询select *都不行。
5.Impala查询时加上倒引号
查询正常。
3.Impala的关键字
Impala同样有一些保留的关键字,跟Hive的还是有一些差别的。Impala的官网只提供了倒引号的方式来解决,如果你非要使用保留的关键字作为标识符的话。以下是部分Impala的保留关键字。
具体请参考:
https://www.cloudera.com/documentation/enterprise/latest/topics/impala_reserved_words.html#reserved_words_current
Impala官网同时还给出了计划内的一些保留关键字,即在Impala以后的版本中会变为保留关键字,所以我们在使用时也需要注意,可以提前做一些规划。部分如下:
具体请参考:
https://www.cloudera.com/documentation/enterprise/latest/topics/impala_reserved_words.html#reserved_words_planning
4.Impala的关键字测试
1.分别创建字段为DATE的表test_keywords,以及表名为DATE的表。注意必须使用倒引号,否则会报错。
2.向两个表分别插入数据。
3.使用Impala进行查询。
一切正常
4.使用Hive进行查询
Hive不用加倒引号也能执行所有查询。
5.总结
2.CDH中的Hive不需要做任何设置,包括不用加倒引号可以直接将保留关键字作为标识符。但如果要使用Impala查询同样的表,需要加上倒引号。
3.Impala的保留关键字与Hive有一些差别,具体可以参考两个官网进行比较。
4.如果要使用Impala自己的保留关键字作为标识符,只有使用倒引号一种办法。但Hive在查询时依旧不受影响,不用加倒引号。
参考:
https://www.cloudera.com/documentation/enterprise/latest/topics/impala_reserved_words.html#reserved_words
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Keywords,Non-reservedKeywordsandReservedKeywords
如果不是非要使用关键字作为字段名啊,表名啊,就尽量别用了。徒增烦恼。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
领取专属 10元无门槛券
私享最新 技术干货