我正在TravisCI,MlFlow和Databricks环境中工作,其中.tavis.yml位于git master分支并检测.py
文件中的任何更改,并且每当更新时,它将运行mlflow命令以运行.py文件在数据块环境中。
我的MLProject文件如下:
name: mercury_cltv_lib
conda_env: conda-env.yml
entry_points:
main:
command: "python3 run-multiple-notebooks.py"
工作流程如下: TravisCI检测到master分支中的更改->将运行MLFlow命令的触发器构建,它将启动数据块中的作业群集以从回购中运行.py文件。
使用一个.py文件效果很好,但是当我尝试使用dbutils运行多个笔记本时,它会抛出
File "run-multiple-notebooks.py", line 3, in <module>
from pyspark.dbutils import DBUtils
ModuleNotFoundError: No module named 'pyspark.dbutils'
请在run-multiple-notebooks.py
的相关代码部分下面找到 def get_spark_session():
from pyspark.sql import SparkSession
return SparkSession.builder.getOrCreate()
def get_dbutils(self, spark = None):
try:
if spark == None:
spark = spark
from pyspark.dbutils import DBUtils #error line
dbutils = DBUtils(spark) #error line
except ImportError:
import IPython
dbutils = IPython.get_ipython().user_ns["dbutils"]
return dbutils
def submitNotebook(notebook):
print("Running notebook %s" % notebook.path)
spark = get_spark_session()
dbutils = get_dbutils(spark)
我尝试了所有选项并尝试了
https://stackoverflow.com/questions/61546680/modulenotfounderror-no-module-named-pyspark-dbutils
也是。它不起作用:(
有人可以建议在作业群集中运行.py时是否存在上述错误的修复程序。我的代码在databricks本地笔记本内部运行良好,但是使用TravisCI从外部运行,并且MLFlow无法正常运行,这是管道自动化的必需条件。