将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”的模块