我在 TravisCI、MlFlow 和 Databricks 环境中工作,其中 .tavis.yml 位于 git master 分支并检测.py
文件中的任何更改,每当它更新时,它将运行 mlflow 命令以在 databricks 环境中运行 .py 文件。我的 MLProject 文件如下所示:
name: mercury_cltv_lib
conda_env: conda-env.yml
entry_points:
main:
command: "python3 run-multiple-notebooks.py"
工作流程如下: TravisCI 检测到 master 分支中的变化——> 触发构建,它将运行 MLFlow 命令,它会在 databricks 中启动一个作业集群以从 repo 运行 .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 无法正常工作,这是管道自动化的必要条件。