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

[Pyspark。熊貓] PicklingError: Could not serialize object (this error is happening only for large datasets)

KrishZ
貢獻者

背景:我用pyspark.pandas在磚jupyter筆記本和做一些文本處理中的dataframe . .

pyspark.pandas火花是大熊貓的API,可以用完全相同的像往常一樣嗎熊貓

錯誤:PicklingError:不能序列化對象:TypeError:不能_thread泡菜”。RLock的對象

一些線索可以幫助你理解錯誤:

我沒有得到任何錯誤,如果我運行腳本:

  • 300行數據。
  • 600行數據(由複製原始300 x2)

我得到一個錯誤,如果我運行腳本:

  • 在3000行數據(由複製原始300 x10)
  • 3000獨特的行(與原來的300行)

這使我認為,錯誤不是特定的,而磚/ pyspark代碼。熊貓可能有一個錯綜複雜/限製/錯誤發生在更高的數據的行數(3000在我的例子中)

有人能解釋為什麼我得到這個錯誤和如何解決它?

如果我們堅持pyspark,不勝感激。熊貓,不去選擇,建議使用sql . .

如果你想看完整的堆棧跟蹤的錯誤,你可以檢查你看到的代碼片段問題我問。

4回複4

werners1
尊敬的貢獻者三世

pyspark熊貓確實可以用來代替經典的熊貓。然而,有一些要注意的地方。如果你隻是複製/粘貼您的python代碼,是真正的機會你不使用火花的並行處理能力(分布式計算)。例如迭代值的結構。這將仍然在單個節點上執行。

所以能夠擴展您的代碼,您應該使用pyspark(熊貓)認為在向量/集而不是記錄。

而不是遍曆記錄,試圖應用一個函數。這就是為什麼發明火花。

嗨@werners,謝謝你的回應。

作為一個初學者,我想使用pyspark。熊貓是一個即插即用。(將我的經典pyspark熊貓代碼。熊貓)。

你會知道為什麼我得到錯誤(的問題)?

真的很奇特,它隻發生在較大的數據集。

你建議我提高磚的問題嗎?

Kaniz
社區經理
社區經理

嗨@Krishna Zanwar,可以提高支持的票與磚。

ryojikn
新的貢獻者三世

@Krishna Zanwar,我收到同樣的錯誤。

對我來說,這種行為是在廣播一個隨機森林(sklearn 1.2.0)最近從mlflow加載,並使用熊貓UDF預測模型。

然而,相同的代碼工作完全在我們OnPrem火花2.4 +集群。

我認為這是由於火花2.4到3的變化,可能一些突發的變化與熊貓UDF API,但是我已經改變到新的模板和同樣的行為仍然會發生。

模式= input_df.drop (" ID ")。模式模式。添加(StructField(“預測”,IntegerType()),假)模式。添加(StructField (“predict_proba FloatType()),假)@pandas_udf(模式,PandasUDFType.GROUPED_MAP) def udf_predict (df: pd.DataFrame) - > pd。DataFrame: df = df(列表(input_df.drop (" ID ") .columns)] y_pred = broadcasted_model.value.predict (df)如果hasattr (broadcasted_model。價值,“predict_proba”): prediction_scores = broadcasted_model.value.predict_proba (df) df (“predict_proba”) = prediction_scores (: 1) df(“預測”)= y_pred df返回

上麵的代碼相當簡單,沒有任何秘密和我同樣的錯誤Krishz

在predict_with_regression output_df = partitioned_df.groupby (scoring_partition)蘋果(udf_predict)文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql /熊貓/ group_ops。py”, 86行,在應用返回self.applyInPandas (udf。函數模式= udf.returnType)文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql /熊貓/ group_ops。py”, 201行,在applyInPandas udf_column = udf (* (df (col)坳df.columns])文件”/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql / udf。py”, 199行,在包裝器返回自我(* args)文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql / udf。py”, 177行,在__call__ judf =自我。_judf文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql / udf。py”, 161行,在_judf自我。_judf_placeholder = self._create_judf()文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql / udf。py”, 170行,在_create_judf wrapped_func = _wrap_function (sc,自我。函數,self.returnType)文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark / sql / udf。py”, 34歲,在_wrap_function pickled_command, broadcast_vars, env,包括= _prepare_for_python_RDD (sc、命令)文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark /抽樣。py”, 2850行,在_prepare_for_python_RDD pickled_command = ser.dumps(命令)文件“/ opt / conda / env / kedro-new-runtime / lib / python3.8 /網站/ pyspark /序列化器。py”, 483行,轉儲提高pickle.PicklingError _pickle(味精)。PicklingError:不能序列化對象:TypeError:不能_thread泡菜”。RLock的對象

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

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

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

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

Baidu
map