NameError: 名称“dbutils”未在 pyspark 中定义

Kri*_*ddy 8 pyspark-sql azure-blob-storage databricks

我正在 databricks 云中运行 pyspark 作业。作为这项工作的一部分,我需要将一些 csv 文件写入数据块文件系统(dbfs),并且我还需要使用一些 dbutils 本机命令,例如,

#mount azure blob to dbfs location
dbutils.fs.mount (source="...",mount_point="/mnt/...",extra_configs="{key:value}")
Run Code Online (Sandbox Code Playgroud)

一旦文件被写入挂载目录,我也试图卸载。但是,当我直接在 pyspark 作业中使用 dbutils 时,它失败了

NameError: name 'dbutils' is not defined
Run Code Online (Sandbox Code Playgroud)

我应该导入任何包以在 pyspark 代码中使用 dbutils 吗?提前致谢。

Eli*_*tta 10

Try to use this:

def get_dbutils(spark):
        try:
            from pyspark.dbutils import DBUtils
            dbutils = DBUtils(spark)
        except ImportError:
            import IPython
            dbutils = IPython.get_ipython().user_ns["dbutils"]
        return dbutils

dbutils = get_dbutils(spark)
Run Code Online (Sandbox Code Playgroud)

  • 你在databricks上运行吗?外部不支持 dbutils (5认同)
  • 我尝试了这个,并收到此错误: ModuleNotFoundError:没有名为“pyspark.dbutils”的模块,并且来自 except 子句:KeyError:“dbutils” (2认同)
  • 您传递给函数的参数“spark”是什么? (2认同)

小智 -12

是的!你可以使用这个:

pip install DBUtils
import DBUtils
Run Code Online (Sandbox Code Playgroud)