将 python 模块导入数据块中的 python 脚本

Import python module to python script in databricks

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

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

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

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

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

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

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

您不能使用其中包含 dbfs: 的路径 - Python 对该文件系统一无所知。您有两个选择:

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

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

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

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

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