dbx同步的國家的幫助
“進口的工作你需要更新的Python路徑包括這個目標目錄同步你的' '
這個工作很好隻要包隻包含驅動程序層功能。然而,我遇到了一個問題,當我“編輯模式”包包含一個scikit-learn模型。
特別是,包包含幾個dataframe-processing函數和分類模型的訓練函數。
我的筆記本中提取一些數據,加工int trainng數據集,訓練和記錄到mlflow分類模型,然後檢索應用到仿真數據集(如pyfunc)。然而,一旦模型需要應用,一個錯誤是:
Python: ModuleNotFoundError:沒有模塊名為“my_package ' '
我認為這是由於引發工人不正確的係統。路徑的設置。有可能迫使他們考慮想要的路徑?
模仿我的筆記:
repo_base = " /工作區/回購/(電子郵件保護)/”導入係統,操作係統sys.path.append (repo_base)進口mlflow進口my_package議員火車,模擬= mp。split_train_and_simulation_dataset (full_dataset = spark.table (“mydb.mydataset”)) classification_model = mp。train_classifier(火車)mlflow.start_run classifier_training_run (): mlflow.sklearn。log_model (classification_model“模型”)logged_model_uri = f“運行:/ {classifier_training_run.info.run_id} /模式”loaded_model = mlflow.pyfunc。spark_udf(火花,model_uri = logged_model_uri result_type =“字符串”)simulation_with_prediction =模擬。withColumn(“預測”,loaded_model (feature_column) = = F.lit (“True”))顯示(simulation_with_prediction) #最後一個命令失敗
嗨@Davide Cagnoni。請看到這篇文章我的答案https://community.m.eheci.com/s/question/0D53f00001mUyh2CAC/limitations-with-udfs-wrapping-module..。
我將為你複製在這裏:
如果你的筆記本是在相同的回購模塊中,這應該沒有任何修改係統路徑。
如果你的筆記本不是在相同的回購模塊中,您可能需要確保係統的路徑是正確的在集群中所有節點需要的模塊。例如,這段代碼應該適合你:
#創建一個包裝器函數在模塊,更新係統路徑進口sys def my_wrapper_function (x): sys.path.append (“/ Workspace /回購/ user_name / repo_name”)從repo_name進口lib_function返回lib_function (x) # Define UDF my_udf = UDF(λcol_name: my_wrapper_function (col_name)) #這應該工作現在df = df.withColumn (F.col (“col1”), my_udf (F.col (“col1”)))