我有一个笔记本,它利用 Python 文件导入一些字典。 Notebook 和 .py 文件都驻留在开发工作区的存储库中。但是,将这些文件合并到工作区后,.py 文件会自动转换为 Databricks 笔记本,而不是保留为 Python 文件。 .py 文件仅包含字典。
为了解决此问题,我在工作区中手动创建了一个全局 _dicts.py 文件,以确保我的脚本正常运行。例如,我在存储库中创建了一个 test.py 文件并将其合并到 master 分支中。我们使用 Azure DevOps 作为 CI/CD 管道,成功构建后,文件将合并到工作区中。但是,部署到工作区中的 .py 文件正在更改为 Databricks 笔记本。
from global_dicts import _transactionTypes from global_dicts import _methods from global_dicts import _statuses from global_dicts import _resources from global_dicts import _endDeviceType from global_dicts import _readingQuality
我尝试手动编辑文件,它起作用了,我还看到了一篇解释如何修复的文章 - 我附上了下面的链接 -。然而,它并没有帮助我实现我想要的目标。
我也可以使用
databricks CLI
重现该问题。
databricks workspace import /Shared/TestFile-LocalZip.py --file TestFile-Local.zip --format SOURCE
databricks workspace import /Shared/TestFile-LocalPython.py --file TestFile-Local.py --language PYTHON
根据文档,这更有可能是Azure Databricks
的
限制,而不是
Azure DevOps
引起的问题。
由于它说无服务器计算对工作区文件操作的支持有限,我在My Personal Compute Cluster
的帮助下找到了一种解决方法,我可以在其中运行
curl
命令将文件从Azure存储帐户复制到Azure Databricks 工作区作为File 而不是
Notebook
。这是我的步骤。将我的
.py
文件上传到 Azure 存储帐户 blob 并生成
Blob SAS URL
;连接到
My Personal Compute Cluster
-> 在
Terminal
中运行
curl
命令;
BlobSASURL="https://xxxxxxxx.blob.core.windows.net/testcontainer/TestFile-Storage.py?xxxxxxxxx"
curl "$BlobSASURL" -o /Workspace/Shared/TestFile-Storage.py