簡體   English   中英

HIVE 上的 Spark-SQL 插件

[英]Spark-SQL plug in on HIVE

HIVE 有一個 metastore,HIVESERVER2 監聽 SQL 請求; 在 Metastore 的幫助下,執行查詢並將結果傳回。 Thrift 框架實際上被定制為HIVESERVER2。 這樣,HIVE 就充當了一個服務。 通過編程語言,我們可以使用 HIVE 作為數據庫。

Spark-SQL與HIVE的關系是:

Spark-SQL 僅使用 HIVE 設置(HDFS 文件系統、HIVE Metastore、Hiveserver2)。 當我們調用 /sbin/start-thriftserver2.sh(存在於 spark 安裝中)時,我們應該提供 hiveserver2 端口號和主機名。 然后通過spark的beeline,我們實際上可以創建,刪除和操作HIVE中的表。API可以是Spark-SQL或HIVE QL。 如果我們創建一個表/刪除一個表,如果我們登錄到 HIVE 並檢查(比如通過 HIVE 直線或 HIVE CLI),它將清晰可見。 換句話說,通過 Spark 所做的更改可以在 HIVE 表中看到。

我的理解是 Spark 沒有自己的元存儲設置,如 HIVE。Spark 僅使用 HIVE 設置,而 SQL 的執行僅通過 Spark SQL API 發生。

我的理解在這里正確嗎?

然后我對 bin/spark-sql.sh 的用法有點困惑(它也存在於 Spark 安裝中)。 文檔說通過這個 SQL shell,我們可以像上面那樣創建表(通過 Thrift Server/Beeline)。 現在我的問題是:元數據信息是如何被spark維護的呢?

或者像第一種方法,我們可以讓 spark-sql CLI 與 HIVE(具體來說:HIVE 的 hiveserver2)通信嗎? 如果是,我們該怎么做?

提前致謝!

我的理解是 Spark 沒有自己的元存儲設置,如 HIVE

如果未提供 Hive 元存儲,Spark 將自行啟動 Derby 服務器

我們可以讓 spark-sql CLI 與 HIVE 通信嗎

啟動外部 Metastore 進程,將hive-site.xml文件添加到$SPARK_CONF_DIRhive.metastore.uris ,或使用SET SQL 語句。

然后spark-sql CLI 應該可以查詢 Hive 個表。 從代碼中,您需要在 SparkSession 上使用enableHiveSupport()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM