将python模块导入databricks中的python脚本

Posted

技术标签:

【中文标题】将python模块导入databricks中的python脚本【英文标题】:Import python module to python script in databricks 【发布时间】:2022-01-18 07:29:58 【问题描述】:

我正在处理 Azure DataFactory 中的一个项目,并且我有一个运行 Databricks python 脚本的管道。此特定脚本位于 Databricks 文件系统中并由 ADF 管道运行,它从位于同一文件夹中的另一个 python 脚本导入模块(两个脚本都位于 dbfs:/FileStore/code 中)。

以下代码可以将 python 模块导入 Databricks 笔记本,但在导入 python 脚本时不起作用。

sys.path.insert(0,'dbfs:/FileStore/code/')
import conn_config as Connect

在集群日志中,我得到: Import Error: No module named conn_config

我猜这个问题与python文件无法识别Databricks环境有关。有什么帮助吗?

【问题讨论】:

你是对的。这是一个错误。 这真的花了一段时间????嗯,还是谢谢??? PS:你还是应该继续tour ... 【参考方案1】:

你不能使用带有dbfs: 的路径——Python 对这个文件系统一无所知。你有两个选择:

    dbfs:/ 替换为/dbfs/(不适用于社区版) 使用dbutils.fs.cp("dbfs:/FileStore/code", "file:/tmp/code", True)将文件从DBFS复制到本地文件系统,并引用该本地文件名:/tmp/code

【讨论】:

还有其他选择吗?我在想这可能是一种在给出 FileStore 路径之前引用我的特定 dbfs 的 python 文件的方法。 您可以将文件上传到 DBFS 上的任何位置,甚至可以将单独的 ADLS 容器挂载到 DBFS @IspanCristi 那么任何给定的解决方案都有效吗?如果没有,请更改您的问题,以便真正了解您想要实现的目标以及您必须遵守的要求!谢谢。【参考方案2】:

我终于用 spark 完成了。创建 Spark 会话后(如果您的集群集成了 Spark 会话,则无需启动会话):

spark.sparkContext.addPyFile("dbfs:/FileStore/code/conn_config.py")
import conn_config as C

此语法可以将 python 模块导入从 Azure DataFactory 运行的 python 脚本。

【讨论】:

【参考方案3】:

使用%run relative_path/file_name,那么您可以立即使用该模块,无需导入。

【讨论】:

【参考方案4】:

您可以只使用对文件存储的引用:

(0,'dbfs:/FileStore/code')

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于将python模块导入databricks中的python脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 Spark 中的 EMR 上使用 --py-files 从 .zip 文件(使用 zipfile 包在 python 中创建)导入模块时出现问题

ModuleNotFoundError:databricks 中没有名为“xlsxwriter”的模块

Databricks-Connect 还返回找不到多个 python 文件作业的模块

Python学习 Python的模块或py文件导入

导入没有.py扩展名的python模块

如何从python中的其他目录导入模块? [复制]