CDH5.13.x文档翻译SQL Differences Bet

2019-07-21  本文已影响0人  gregocean

https://www.cloudera.com/documentation/enterprise/5-13-x/topics/impala_langref_unsupported.html#langref_hiveql_delta
Impala的SQL语法遵循SQL-92标准,还包括了很多业界扩展比如内置函数。查看Porting SQL from Other Database Systems to Impala从多种数据库系统的SQL适配到Impala的讨论。

因为Impala和Hive共享metastore数据库,他们的表也共享,接下来几节会说明Impala和Hive细节上的不同。

扩展阅读:

Impala不支持的HiveQL特性

当前Impala的release不支持以下你可能已经熟悉的HiveQL:

Note:
默认情况下Impala只允许在每个查询中包含一个COUNT(DISTINGCT columns)表达式。
如果不需要完全精准,可以使用NDV(colum)得到一个列的distinct的估计值。一个查询可以包含多个NDV(colum)。让Impala自动重写COUNT(DISTINCT)NDV(),需要设置APPX_COUNT_DISTINCT选项。
要让结果与COUNT(DISTINCT)一致,可以使用下面的查询例子:
select v1.c1 result1, v2.c1 result2 from
(select count(distinct col1) as c1 from t1) v1
cross join
(select count(distinct col2) as c1 from t1) v2;
由于CROSS JOIN是一个代价很高的操作,还是建议尽量使用NDV()

Impala在1.2之后支持UDFs。查看Impala UDFs的细节:User-Defined Functions (UDFs)

Impala目前不支持这些HiveQL语句:

Impala只在TEXT格式的表中支持serialization.null.format,忽略Parquet的属性以及其他格式。Hive支持Parquet和其他格式中的serialization.null.format属性并在扫描过程中将匹配到的值转为NULL。
查看 Data Files for Text Tables 获取Impala中使用表属性的细节。

Impala与HiveQL特性中语义上的不同

这部分阐述Impala和Hive具有相似功能、有时是相同语法,但运行时有不同语义的特性。

安全

SQL语句

ImpalaSQL语句在有时尽管和HiveQL在语法和声明上相似但语义不同。

数据类型

其他

上一篇 下一篇

猜你喜欢

热点阅读