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

磚雪花dataframe.toPandas()采取更多的空間和時間

玻雷吉
新的貢獻者三世

我有兩個完全相同的表(行和模式)。一個表recides AZSQL服務器數據基礎,另一個是在雪花數據庫。現在我們有一些現有的代碼,我們想從azsql遷移到雪花,但當我們試圖創建一個熊貓dataframe從雪花它需要20到30分鍾(3.8米隆記錄),在相同azsql任務,我們能夠在5分鍾。也perfome toPandas AZSQL我們使用很小的單節點集群和雪花,我們必須使用一個集群56個gb的內存(否則我們得到伯父錯誤)。

1接受解決方案

接受的解決方案

玻雷吉
新的貢獻者三世

我能找到這個問題。這正在發生,因為python不理解火花的decimal數據類型,火花將它視為對象,所以剩下的python代碼花費的時間太長。

顯式類型鑄造後它更快:smiling_face_with_sunglasses::grinning_face_with_big_eyes:。感謝各位的輸入。

這是代碼中,我使用來處理所有小數點列,讓我們知道如果有一個更好的辦法:

def fix_decimal_type (df): decimal_columns =列表(過濾器(沒有,(如果“小數”col_ unseen_df_sp.schema [col_] .dataType.simpleString()”)的col_ df.columns]))在decimal_columns col_: df = df。withColumn (col_坳(col_) .cast(倍增式()))返回df

在原帖子查看解決方案

8回答說8

Kaniz
社區經理
社區經理

你好@玻雷吉!我的名字叫Kaniz,我這裏的技術主持人。很高興認識你,謝謝你的問題!看看你的同行在社區有一個先回答你的問題。否則我將與我的團隊跟進,回到你soon.Thanks。

玻雷吉
新的貢獻者三世

嗨@Kaniz開羅,非常感謝,我知道這可能是因為雪花如何存儲數據,也要檢查這裏如果有人麵臨它。

Ryan_Chynoweth
尊敬的貢獻者三世

所以我理解你的問題,你能提供更多的信息,這些問題嗎?

  • 你正在讀相同的數據來自SQL Azure和雪花Dataframe火花。在這一點上你將引發dataframe熊貓dataframe使用“toPandas()的方法?
  • 上述過程是4 - 6倍的時間比SQL Azure相比,當使用雪花嗎?
  • 如果上述兩個問題的答案是“是的”,我很好奇如果對Dataframes分區的數量都是一樣的,因為這可能會影響這個過程。
  • 如果上述兩個問題的答案是“是的”,那麼它很可能從數據庫讀取數據的性能就是花這麼長時間。這可能是一個問題在雪花端不讀取數據時按預期執行。

我的最後一個問題,你為什麼要把熊貓Dataframe 380萬行嗎?我建議保持它作為火花Dataframe熊貓開始達到它的局限性處理速度當行達到數百萬。

玻雷吉
新的貢獻者三世

嗨,瑞安,2第一個問題的答案是肯定的。和分區AZSQL是1和雪花是46歲。也不是隻有時間,雪花,我們可以看到一個內存消耗激增(一般)。雪花我們需要更多的內存工作的時候,我不知道為什麼?這就是我試圖理解。關於你的建議保持數據幀火花,是的,我們讓它作為我們最後的選擇,因為它需要大量的代碼更改,我們已經有代碼與AZSQL沒問題(380萬條記錄。

謝謝你的回複。

Brijan

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

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

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

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

Baidu
map