pyspark - ModuleNotFoundError:在数据块中的作业集群上运行 multiple.py 文件/笔记本时没有名为“pyspark.dbutils”的模块
问题描述
我在 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 无法正常工作,这是管道自动化的必要条件。
解决方案
推荐阅读
- python - 我在编写以下代码时遇到类型错误
- swift - 从 URL 获取字符串时可以添加超时功能吗?
- java - 在数组中搜索字符
- linux - 使用 Python3 以编程方式控制 debugfs
- javascript - 为什么 UrlFetchApp.fetch(url).getContentText() 返回不一致的结果?
- c# - 如何使用 LINQ 将目录结构(存储在数据库中)作为 JSON 消息输出?
- android - Android 分页搜索
- css - 为什么标题单元格与正文单元格不对齐?
- swift - 项目之间的 NSOutlineView 间距不正确
- pine-script - 有人可以解释一下究竟是什么高:松脚本中的na