我們已經導入自定義模塊輪從我們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 the UDF normalize_stringUDF = udf(lambda col_name: normalize_string(col_name)) # this works always print(normalize_string("wjfhw//ef efuehf fheu ehe *&*H")) # this fails when importing the module from Repos, but works when installing the module's wheel on the cluster 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”
其實對我來說是我甚至不用sys.path工作。附加但我使用完整路徑
從refined_pipeline_library.refined_pipeline.data_utils。data_utils進口normalize_string
比在文件夾data_utils data_utils我會把文件。與類normalize_string py,
另外我總是把__init__。py空文件,
當然“回購”文件需要在管理控製台啟用