有人可以向我解釋如果我們有比驅動程式大小大得多的資料會發生什么嗎?在這種情況下,Spark 究竟是如何作業的?如果它將資料快取在磁盤記憶體中,那么它將如何成為“記憶體計算”?任何幫助將不勝感激。
uj5u.com熱心網友回復:
@Steven 已經回答了,在這里加上我的 2 美分。
Spark 驅動程式是一臺顯然無法保存 TerraBytes 資料的機器。假設您有一個或多個 10TB 的檔案,并且您希望 Spark 執行此檔案的一些計算。驅動程式機器只會創建一個關于如何在這個檔案上執行計算的邏輯計劃,它會提出最好的和優化的計劃(在鎢和催化劑優化器的幫助下),檔案被磁區,每個磁區由位于更靠近塊所在位置的機器中的執行器(根據 HDFS 中的資料位置)。
因此,spark 可以處理比驅動程式大得多的資料大小,因為讀取操作不會發生在驅動程式上。某些操作(例如收集)可能會使驅動程式不堪重負,因為它會在寫下結果之前將所有執行程式結果收集給驅動程式。
uj5u.com熱心網友回復:
只有來自司機的指示。資料在執行器上存盤和計算。即使資料不適合驅動程式,它也應該適合執行程式的總可用記憶體。只要您不執行collect(將所有資料從執行程式帶到驅動程式),您就應該沒有問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360759.html
上一篇:Spark-檢查兩個字串列的交集
