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

一些很簡單的函數在熊貓火花非常緩慢

Vik1
新的貢獻者二世

我有一個熊貓在火花dataframe 800萬行和列。花了3.48分鍾運行df。形狀和需要。它還需要很長時間運行df。花了4.55分鍾。相比之下df.var1.value_counts () .reset_index()隻花了0.18秒。

我有點驚訝,形狀和頭部-簡單的dataframe函數把這個長。我會假設value_counts應該需要更長的時間,因為如果var1值分割在不同的節點數據洗牌是必要的。形狀是一個簡單的計數而頭部是一個簡單的從任何節點獲取5行。

我做錯了什麼嗎?有文檔的最佳實踐和指導如何使用火花熊貓API

4回複4

Hubert_Dudek1
尊敬的貢獻者三世

一定要進口為“進口pyspark.pandas作為ps”

請比較次類似的操作通常的火花。可以有多個與數據相關的問題。

  • 尋找數據傾斜;一些分區可以是巨大的,小的,因為不正確的分區。您可以使用火花UI,但也調試代碼有點(get getNumPartitions())尤其是SQL可以不均勻地劃分分區(有設置連接器下界,等等)。你可以嚐試有一個分區作為工人的內核數乘以X(所以他們將一步一步處理隊列中)。當數據被處理,您的分區應該是英國《金融時報》在RAM中。
  • 增加調整大小spark.sql.shuffle.partitions默認是200大。最好如果你計算數據大小除以分區的大小,
  • 增加司機的大小兩倍執行程序(但得到最優規模,請分析負載——在磚集群選項卡上的指標有Ganglia甚至更好地整合datadog集群),
  • 檢查寬轉換。之間的轉換必須改組數據分區和組他們隻有一個洗牌。假設一個洗牌發生(例如,從整個數據集得到的平均值將要求所有分區的數據)。記住,分區之間移動員工使用網絡。已經有一個分區的內存工人,和應該有足夠的內存操作輸入數據。寫入磁盤,如果沒有內存可以瓶頸(檢查磁盤火花UI中泄漏)
  • 如果您需要過濾數據,如果可能的話,做到在閱讀從SQL因此將表語推動並添加在SQL查詢。
  • 確保一切在一個分布式的方式運行,特別是UDF。它將幫助如果你使用矢量化熊貓udf將運行在執行人。不要使用收集等。
  • 有時(但我打賭它不是這種情況下),我處理大數據流更容易與大數據集。在這種情況下,你需要卡夫卡(可融合性的雲)的SQL和磚之間。
  • 關於基礎設施,使用更多的工人和檢查你的ADLS連接通過一個私人聯係。監控進度保存在一個文件夾。您還可以使用溢價ADLS更快。

Kaniz
社區經理
社區經理

嗨@Wiki,我們一直沒有收到你最後的回應@Hubert杜德克,我檢查,看看他的建議幫助你。否則,如果你有任何解決方案,請與社區分享,因為它可以幫助別人。

colinsorensen
新的貢獻者二世

確鑿的維克的經驗。頭()()和形狀非常緩慢,隨著信息()。

休伯特提供了一些建議,但我不認為任何解釋為什麼這些基本功能沒有執行其他功能可以運行在半秒鍾。

PeterDowdy
新的貢獻者二世

這是慢的原因是因為熊貓需要索引列執行“形狀”或“頭”。如果你不提供一個,pyspark熊貓列舉了整個dataframe創建一個默認的一個。例如,給定列A、B和C dataframe與一百萬行“df”,然後“df.pandas_api () .head()將需要很長時間,但“df.pandas_api (index_col = A) .head()”將很快完成。

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

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

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

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

Baidu
map