Apache Hive兼容性
適用於:磚運行時
Databricks中的Apache Spark SQL被設計為與Apache Hive兼容,包括metastore連接、SerDes和udf。
Metastore連接
看到外部Apache Hive亞穩態有關如何將Databricks連接到外部托管的Hive metastore的信息。
支持的Hive特性
Spark SQL支持絕大多數Hive特性,例如:
Hive查詢語句,包括:
選擇
集團
命令
集群的
排序
所有Hive表達式,包括:
關係表達式(
=
,⇔
,= =
,<>
,<
,>
,>=
,< =
等)算術表達式(
+
,-
,*
,/
,%
等)邏輯表達式(AND, &&, OR, ||,等)
複雜類型構造函數
數學表達式(符號,ln, cos等)
字符串表達式(instr, length, printf等)
用戶定義函數(UDF)
用戶定義的聚合函數(UDAF)
用戶定義的序列化格式(SerDes)
窗口函數
連接
加入
{左|右| full}外層連接
左半聯接
交叉連接
工會
子查詢
SELECT col FROM (SELECT a + b AS col FROM t1
抽樣
解釋
分區表,包括動態分區插入
視圖
絕大多數DDL語句,包括:
創建表
創建表為select
ALTER TABLE
大多數Hive數據類型,包括:
非常小的整數
短整型
INT
長整型數字
布爾
浮動
雙
字符串
二進製
時間戳
日期
數組< >
地圖< >
STRUCT < >
不支持的Hive功能
下麵的章節包含了Spark SQL不支持的Hive特性列表。這些特性中的大多數在Hive部署中很少使用。
蜂群優化
少數Hive優化沒有包含在Spark中。由於Spark SQL的內存計算模型,其中一些(如索引)不那麼重要。
塊級位圖索引和虛擬列(用於構建索引)。
自動確定join和groupby的reducer數量:在Spark SQL中,您需要控製shuffle使用後的並行度
集spark.sql.shuffle.partitions = [num_tasks];
.傾斜數據標誌:Spark SQL不遵循Hive中的傾斜數據標誌。
STREAMTABLE
join中的提示:Spark SQL不遵循STREAMTABLE
提示。合並多個小文件查詢結果:如果結果輸出包含多個小文件,Hive可以選擇將小文件合並為更少的大文件,以避免溢出HDFS元數據。Spark SQL不支持。