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)
相關文章
相關標籤/搜索