spark千萬資料join問題

時間 2021-06-06 18:31:15

1樓:misc whistle

遇到過類似問題。 可以有幾個辦法,

乙個方法是試著用union, groupbykey, mapvalues。 似乎會節約一些記憶體。

方法2 join前,將兩個集合拆成幾部分,組合起來做join。

方法3, 一種簡單的辦法, 遇到這種情形的join用map reduce代替spark,計算完了再轉回spark繼續就成了。

方法4,使用spark-submit時,指定記憶體。另外將每個node中spark配置裡的單任務記憶體優化一下。比如從5GB改成9GB

2樓:

我測試過百萬資料join億級資料。你可以從如下幾個方面入手:1.

減少data shuffle的規模。多map掉無用column再進行reduce like的操作。2.

檢查資料是否是skewed data。也就是說join出的key value pair大小極度不均。3.

Spark引數調優。4.公升級集群。

至於是否公升級,建議採用ganglia監控集群,如果Total used memory的peak接近所有可用memory,那麼要麼加大spill到disk的量,要麼就公升級集群記憶體。

Spark 千萬級使用者相似度計算?

nns。另外,實際生產還可以結合業務特點優化,比如說先對使用者按基本屬性 性別 年齡這些 進行分群,然後每個分群再單獨兩兩計算相似度,可以降低計算量,達到效能和效果的平衡。 tozh 兩兩相似度是肯定不可能的,一般是top N。這個topN怎麼計算呢,首先你要把相似度為0的都排除掉,具體方法可以參考...

在Java層面做資料join是否可行?

小天 要看具體場景。例1 根據uid從表A查詢出來一條資料,根據uid從表B查詢出來少量條資料,然後在記憶體中將兩表資料join在一起。可行 例2 根據條件從表A中查詢出少量條資料,再根據結果中的某些欄位從表B中查詢出對應的少量條資料,然後在記憶體中將兩表資料join在一起。可行 例3 根據條件從表...

大資料hadoop和spark怎麼選擇

Statham Hadoop發展的比較早,是乙個大資料層面的批處理框架,能夠把很多效能一般的計算機組成分布式儲存和計算集群,極大的節約成本。Spark是後來發展起來的流式計算處理框架,特點是使用記憶體進行計算和處理,所以效率比hadoop高很多,但也比較底層,需要手動的寫mr。Flink則整合了ha...