当我在 databricks 笔记本中运行以下 python 函数与从模块导入和调用它时,我试图了解运行时错误的来源
直接在 databricks notebook 上运行
def test_numba_func():
from numba import jit
@jit(cache=True)
def test():
return .5 ** 2 / 4.0
print(test())
调用这个函数不起作用
test_numba_func()
运行时错误:无法缓存函数“test_numba_func..test”:文件“没有定位器”
但是,如果我创建一个模块,例如具有相同功能的 databricks_test.py,则以下导入可以正常工作。
模块导入
import databricks_test
databricks_test.test_numba_func()
不过我可以直接在 Colab 中运行。
我认为这是由于某些权利问题。如何修复我的代码以使其适用于数据块?
答案 0 :(得分:0)
不同之处在于 Databricks 上的笔记本不是真正的文件 - 当您使用它们时,它们会保存在内存中,并且会动态持久保存到数据库之类的东西中。这不同于使用真实文件的模块,或者 Google notebooks 也是磁盘上的文件。
理论上您可以尝试将环境变量 NUMBA_CACHE_DIR
设置为 /tmp/cache
(docs) 之类的值,但我不确定它是否会起作用。此外,它只会在集群终止之前工作。