ModuleNotFoundError:在数据块中的作业群集上运行多个.py文件/笔记本时,没有名为“ pyspark.dbutils”的模块

时间:2020-05-18 22:15:02

标签: pyspark travis-ci databricks mlflow dbutils

我正在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无法正常运行,这是管道自动化的必需条件。

0 个答案:

没有答案