我正在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环境有关。有什么帮助吗?
我终于用spark完成了它。创建Spark会话后(如果集群集成了Spark会话,则无需启动会话(:
spark.sparkContext.addPyFile("dbfs:/FileStore/code/conn_config.py")
import conn_config as C
此语法可以将python模块导入从Azure DataFactory运行的python脚本。
不能将path与dbfs:
一起使用-Python对这个文件系统一无所知。你有两个选择:
- 将
dbfs:/
替换为/dbfs/
(在社区版上不起作用( - 使用
dbutils.fs.cp("dbfs:/FileStore/code", "file:/tmp/code", True)
将文件从DBFS复制到本地文件系统,并引用该本地文件名:/tmp/code
使用%run relative_path/file_name
,则可以立即使用模块,而无需导入。
您可以只使用对文件存储的引用:
(0,'dbfs:/FileStore/code')