我有兩個完全相同的表(行和模式)。一個表recides AZSQL服務器數據基礎,另一個是在雪花數據庫。現在我們有一些現有的代碼,我們想從azsql遷移到雪花,但當我們試圖創建一個熊貓dataframe從雪花它需要20到30分鍾(3.8米隆記錄),在相同azsql任務,我們能夠在5分鍾。也perfome toPandas AZSQL我們使用很小的單節點集群和雪花,我們必須使用一個集群56個gb的內存(否則我們得到伯父錯誤)。
我能找到這個問題。這正在發生,因為python不理解火花的decimal數據類型,火花將它視為對象,所以剩下的python代碼花費的時間太長。
顯式類型鑄造後它更快。感謝各位的輸入。
這是代碼中,我使用來處理所有小數點列,讓我們知道如果有一個更好的辦法:
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
所以我理解你的問題,你能提供更多的信息,這些問題嗎?
我的最後一個問題,你為什麼要把熊貓Dataframe 380萬行嗎?我建議保持它作為火花Dataframe熊貓開始達到它的局限性處理速度當行達到數百萬。