我們已經導入自定義模塊輪從我們AzDevOps庫文件。我們將使用磚回購的任意文件化簡但打破我們的火花UDF包裝ModuleNotFoundError圖書館的功能。這是一個限製使用回購文件/筆記本作用域模塊,或者我們缺少一個步驟嗎?
更新:我隱含在代碼注釋,但可能需要顯式地從回購文件導入工作狀態。事實證明,直接調用UDF。但這並不工作:df = df.withColumn (F.col (“col1”), normalize_stringUDF (F.col (“col1”)))
#回購文件添加到syspath進口sys sys.path.append (“/ Workspace /回購/ refined_pipeline_library / refined_pipeline”) #導入函數從refined_pipeline.data_utils回購。data_utils進口normalize_string # define UDF normalize_stringUDF = UDF(λcol_name: normalize_string (col_name)) #這作品總是打印(normalize_string (“wjfhw / / ef efuehf fheu ehe * & * H”)) #這個失敗在導入模塊從回購,但工作在集群上安裝模塊的時輪df = df.withColumn (F.col (“col1”), normalize_stringUDF (F.col (“col1”)))
錯誤的是:
PythonException:“pyspark.serializers。SerializationError:由回溯(最近的電話最後):org.apache.spark。SparkException:工作階段失敗而終止:任務0階段38.0失敗了4次,最近的失敗:在舞台上失去了任務0.3 38.0 (TID 71)(10.16.12.16執行人0):org.apache.spark.api.python。PythonException:“pyspark.serializers。SerializationError:由回溯(最近的電話最後):文件“/磚/火花/ python / pyspark /序列化器。py”, 165行,在_read_with_length返回self.loads (obj)文件“/磚/火花/ python / pyspark /序列化器。py”, 466行,在負載返回泡菜。負載(obj,編碼=編碼)ModuleNotFoundError:沒有模塊名為“refined_pipeline”。完整回溯:回溯(最近的電話最後):文件“/磚/火花/ python / pyspark /序列化器。py”, 165行,在_read_with_length返回self.loads (obj)文件“/磚/火花/ python / pyspark /序列化器。py”, 466行,在負載返回泡菜。負載(obj,編碼=編碼)ModuleNotFoundError:沒有模塊命名為“refined_pipeline”
它也是必不可少的運行時版本。一般來說,它是更好的在11。x我意識到(甚至有一個版本選擇的文件在回購管理員麵板)。
其他功能的改進來以下運行時。
@Kaniz開羅,在磚或任何人,為什麼要這樣的出租汽車司機進口從不同回購在工作區中所有的執行者?有可能的根工作區在python默認路徑,而不是隻有回購的運行筆記本嗎?是產品的路線圖的一部分,或由於某種原因不是一個實際的選擇嗎?
我意識到創建一個輪子構建的包和安裝在所有節點上,但我認為我們的係統工程師希望避免自定義安裝包,所以我們看回購作為一個潛在的方法來使用自定義的包可以被重用在許多筆記本,與筆記本電腦可能在不同的回購,因此嵌套定製包在筆記本回購或所有這些筆記本回購並不實用。
但實際上,我甚至不能得到這個建議@Scott.B(客戶)的工作。工人的執行人節點隻是似乎無法找到包。
OP一樣,我可以導入包好,除了當我把它(就我而言)調用DataFrame.applyInPandas(),而不是包裝在一個UDF。