取消
顯示的結果
而不是尋找
你的意思是:

使用大型dataframe內存(數據不允許“靜止”)導致司機崩潰和/或內存不足

James_209101
新的貢獻者二世

我有困難在磚與數據,我們是不允許保存或保存。數據來自一個API()返回一個JSON響應。我們有一個scala包在我們的集群,使查詢(查詢近6 k),保存到dataframe,然後爆炸,dataframe到一個新的dataframe,我們可以使用它來獲取我們需要的信息。然而,所有數據被收集到司機節點。然後,當我們試圖運行比較/驗證/使用結果dataframe火花代碼,它不會分配工作(司機試圖盡)和占用所有司機的JVM堆內存。

我們得到的兩個錯誤是“OutOfMemoryError: Java堆空間”或“意外引發司機已經停止並重新啟動。你的筆記本將會自動重新接好。”

我們有一個64 gb的司機(5 32 gb節點)和馬克斯JVM堆內存增加到25 gb。而是因為它不會分發的工作節點,司機要保持與伯父崩潰的錯誤。

運行很好當我們做保存這個數據和運行我們的拚花火花代碼/比較拚花(分配好工作),但是,每一個協議與數據所有者,這樣我們隻能保存數據用於發展生產)(目前不是一個可行的選擇。

我們已經試過的東西:

刪除所有顯示/打印/日誌

緩存dataframe(和之前/之後dataframes它連接)與.cache () / .count()和火花。sql(緩存表<表>)

提高司機的大小節點64 gb

增加JVM堆大小25 gb

從dataframe移除不需要的列

習語.repartition dataframe (300)

非常感謝您的幫助。

2回答2

Hubert_Dudek1
尊敬的貢獻者三世

請檢查你的代碼.collect()或類似的功能。收集伯父錯誤是最受歡迎的原因。下一步,請分析火花UI——尋找數據泄漏。當數據寫入內存驅動和背部,因為它太大了,適合在內存中。

我複製粘貼下麵的列表優化技術。也許下麵的一個將幫助:

  • 尋找數據傾斜;一些分區可以是巨大的,小的,因為不正確的分區。您可以使用火花UI,但也調試代碼有點(get getNumPartitions()),尤其是SQL可以把它不平等的分區(有設置連接器下界,等等)。你可以試著分區的數量作為工人的核心乘以X(所以他們將處理隊列中一步一步),
  • 檢查數據泄漏在火花UI意味著寫作洗牌從RAM和磁盤分區。(25、50和75百分位應該是類似的)。增加洗牌分區如果他們必須經常寫到磁盤上。
  • 增加調整大小spark.SQL.shuffle.partitions默認是200大,你應該計算數據大小除以分區的大小,
  • 增加司機的大小兩倍執行程序(但得到最優規模,請分析負載——在磚集群選項卡上的指標有Ganglia甚至更好地整合datadog集群),
  • 檢查寬轉換,在分區之間需要調整數據,組織他們做一個洗牌,
  • 如果您需要過濾數據,如果可能的話,做到在閱讀從SQL因此將表語推這將增加在SQL查詢,
  • 確保一切在一個分布式的方式運行,特別是UDF。它將幫助如果你使用矢量化熊貓udf將運行在執行人。甚至熊貓udf可以緩慢。你可以嚐試而不是注冊metastore中的SQL函數並使用它在您的SQL查詢。
  • 不要使用收集等,因為它們不是運行在分布式的方式,而是在驅動程序裝入內存對象的一切(就像在本地執行筆記本)
  • 關於基礎設施,使用更多的工人和檢查你的ADLS連接通過一個私人聯係。
  • 您還可以使用溢價ADLS更快。
  • 有時我處理大數據作為流更容易與大數據集。在這種情況下,你需要卡夫卡(彙合的雲很優秀)的SQL和磚之間。如果你使用流進行一次性處理,請使用AvailableNow而不是一次。
  • 讀取數據時,請記住,如果你閱讀從一個大分區文件(大約200 MB)將會更快。所以對於一個三角洲,閱讀前可以優化。當然,如果你讀,例如,持續x天每天分區將會更快,但運行優化可以幫助。
  • 關於寫作,最好的是,你得到盡可能多的文件核/分區默認情況下,每個核心並行正在寫一個文件。以後你可以通過提及優化合並它們。請檢查每個文件大小相似。如果沒有,看來你有一個傾斜的分區。在一個巨大的數據集,有時是好鹽,然後分區數量,數量比相等(你可以從SparkContext獲得核的數量。DefaultParallelism屬性)

Vidula_Khanna
主持人
主持人

嗨@James舉行

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳嗎?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map