Numba RuntimeError 仅当直接在 databricks 笔记本上运行时

时间:2021-05-10 19:44:17

标签: databricks azure-databricks

当我在 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()

Databricks 笔记本 Databricks notebook screenshot

不过我可以直接在 Colab 中运行。

enter image description here

我认为这是由于某些权利问题。如何修复我的代码以使其适用于数据块?

1 个答案:

答案 0 :(得分:0)

不同之处在于 Databricks 上的笔记本不是真正的文件 - 当您使用它们时,它们会保存在内存中,并且会动态持久保存到数据库之类的东西中。这不同于使用真实文件的模块,或者 Google notebooks 也是磁盘上的文件。

理论上您可以尝试将环境变量 NUMBA_CACHE_DIR 设置为 /tmp/cache (docs) 之类的值,但我不确定它是否会起作用。此外,它只会在集群终止之前工作。