簡體   English   中英

Hive 和 Spark 的執行差異

[英]Differences in Execution betwen Hive and Spark

全部:我正在尋找有更多知識的人來檢查我對 Hive 和 Spark 的理解

我一直在研究不同的大型數據庫解決方案,並試圖了解 Hive 和 Spark 之間的執行差異。 我嘗試安裝 Hadoop、Hive 和 Spark 以查看它們的性能。 我能夠讓 Hadoop 和 Spark 工作。 我無法讓 Hive 工作。

當我通過優化器后在 Spark 中運行查詢時,似乎最大的優勢是最早開始時只從源中選擇相關的表數據。 因此,如果我在最終答案中只需要 Table1.columns(A,B,C),但告訴系統在 (Table1.A=Table2.B) 上加入 Table1 和 Table2,它會立即將攜帶的表格減少到僅相關項目...我認為 Hive 不會那樣做。 我相信它會在以后進行完全加入並執行縮減。

memory 存儲也存在差異(Hive 經常返回 HDFS,而 Spark 將內容保存在 RAM 中)。 根據數據集/查詢,這既有優點也有缺點。

不幸的是,因為我無法讓 Hive 運行,我的理論是基於讀取其他人在 Hive 中運行的輸出。

Tez 和 Spark 上的 Hive 都使用 Ram(內存)對數據進行操作。 計算的將被視為單個任務的分區數量與 Tez 與 Spark 上的 Hive 完全不同。 默認情況下,Tez 上的 Hive 嘗試使用組合器將某些拆分合並到單個分區中。 Hive 一個 Tez 似乎以比 spark 更好的方式處理集群的自動縮放,並且在大多數情況下都可以工作。Spark 不適用於自動縮放,它會出現很多 shuffle 錯誤,並且在有多個階段時會失敗。 但是考慮到集群的固定大小,Spark 似乎在 TEZ 上的性能優於 Hive,這可能歸因於所做的一些優化以及如何實現洗牌、序列化等。

我認為 hive 和 spark 本來就有不同的目標,它們的執行 styles 就是基於這些目標。

Apache spark 是一個框架,可讓您對大型數據集進行計算。 存儲在 hdfs

Hive is an SQL interface to retriev data stored in an hdfs, and other clusterized and object store filesystems (S3 is an example) in a structured way.

Spark 將事情保存在 ram 上,因為它更專注於使用數據集進行計算。 Hive 更專注於以結構化方式檢索數據,因此它並沒有那么關注速度(話雖如此,hive 已經有了改進,比如旨在提高性能的 llap)。

我喜歡使用與傳統軟件工具的類比。 一方面,您可以擁有一個關系數據庫,另一方面,您可以擁有一種編程語言。 它們在某些功能上都有重疊(您可以使用編程語言寫入和讀取磁盤,並且可以使用 sql 引擎進行一些計算。但是,如果手頭的任務需要密集和復雜的計算,您可能會使用編程語言。如果您正在尋找一個可以讓您以結構化方式存儲數據的系統,那么您可以為 sql 引擎尋找 go。

暫無
暫無

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

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