背景:我用pyspark.pandas在磚jupyter筆記本和做一些文本處理中的dataframe . .
pyspark.pandas火花是大熊貓的API,可以用完全相同的像往常一樣嗎熊貓
錯誤:PicklingError:不能序列化對象:TypeError:不能_thread泡菜”。RLock的對象
一些線索可以幫助你理解錯誤:
我沒有得到任何錯誤,如果我運行腳本:
我得到一個錯誤,如果我運行腳本:
這使我認為,錯誤不是特定的,而磚/ pyspark代碼。熊貓可能有一個錯綜複雜/限製/錯誤發生在更高的數據的行數(3000在我的例子中)
有人能解釋為什麼我得到這個錯誤和如何解決它?
如果我們堅持pyspark,不勝感激。熊貓,不去選擇,建議使用sql . .
如果你想看完整的堆棧跟蹤的錯誤,你可以檢查你看到的代碼片段問題我問。
@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的對象