Impala 和 Hive 之间 SQL 区别(翻译)

Impala 和 Hive 之间 SQL 区别

当前版本的 Impala(1.2.3)不支持如下在 HiveQL 中可用的 SQL 特性: html

  • 非标量数据类型如 maps, arrays, structs
  • 可扩展机制(Extensibility mechanisms)例如 TRANSFORM, 自定义文件格式, 或自定义 SerDes; zImpala 1.2
  • XML 和 JSON 函数
  • HiveQL 中的某些聚合函数: variance, var_pop, var_samp, stddev_pop, stddev_samp, covar_pop, covar_samp, corr, percentile, percentile_approx, histogram_numeric,collect_set; Impala 支持这些聚合函数: MAX()MIN()SUM()AVG(),  COUNT()
  • 用户定义产生表函数(User Defined Table Generating Functions,UDTFs)
  • 采样
  • Lateral views
  • 受权功能如角色
  • 一个查询中多个 DISTINCT 子句(Multiple DISTINCT clauses per query)

Impala 当前不支持这些 HiveQL 语句: sql

  • ANALYZE TABLE (在 Impala 有等价的 COMPUTE STATS)
  • DESCRIBE COLUMN
  • DESCRIBE DATABASE
  • EXPORT TABLE
  • IMPORT TABLE
  • SHOW PARTITIONS
  • SHOW TABLE EXTENDED
  • SHOW INDEXES
  • SHOW COLUMNS

许多状况下 Impala 与 Hive 中使用类似的 SQL 语句和子句的语义不一样: 数据库

  • Impala 使用不一样的语法和查询提示(query hints)名称。参见 Joins 
  • Impala 在执行 SORT BY, DISTRIBUTE BY, CLUSTER BY 时不使用 MapReduce(Impala does not expose MapReduce specific features of SORT BY, DISTRIBUTE BY, or CLUSTER BY)
  • Impala 查询中能够不须要 FROM 子句
  • Impala 支持有限的几组隐式类型转换。这能够避免从未预期的转换行为致使未知的结果
    • Impala 在 string 和 numeric 或 Boolean 之间不进行隐式转换
    • Impala 在 numeric string 到 timestamp 之间不进行隐式转换(Impala does perform implicit casts among the numeric types or from string to timestamp)
  • Impala 不使用本地时区保存时间戳,以免超出预期的时区致使的未知的结果。时间戳都是相对于 GMT(格林尼治时间) 存储的
  • 就像在传统数据库系统中那样,Impala 不会为溢出列(column overflows)返回 NULL,以便客户能够区分 NULL 数据和溢出条件。Impala 返回该数据类型的最大或最小值。例如,tinyint 的有效值范围是 -128 到 127。在  Impala 里,设置 tinyint 为 -200 则返回值是 -128 而不是 NULL。设置 tinyint 为 200 实际是 127。
  • Impala 不提供虚拟列(virtual columns)
  • Impala 没有公开锁(Impala does not expose locking)
  • Impala 没有公开一些配置属性(Impala does not expose some configuration properties)
相关文章
相关标签/搜索