如何在pyspark中加载databricks包dbutils

Bab*_*abu 5 pyspark databricks

我试图在 pyspark 中运行以下代码。

dbutils.widgets.text('config', '', 'config')
Run Code Online (Sandbox Code Playgroud)

这是给我一个错误说

 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 NameError: name 'dbutils' is not defined
Run Code Online (Sandbox Code Playgroud)

那么,有什么方法可以通过包含 databricks 包(例如导入)在 pyspark 中运行它?

感谢您的帮助

小智 16

从 databricks Runtime v3.0 开始,上面pprasad009提供的答案不再有效。现在使用以下内容:

def get_dbutils(spark):

      dbutils = None
      
      if spark.conf.get("spark.databricks.service.client.enabled") == "true":
        
        from pyspark.dbutils import DBUtils
        dbutils = DBUtils(spark)
      
      else:
        
        import IPython
        dbutils = IPython.get_ipython().user_ns["dbutils"]
      
      return dbutils

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

请参阅:https://learn.microsoft.com/en-gb/azure/databricks/dev-tools/databricks-connect#access-dbutils


ppr*_*009 5

https://docs.azuredatabricks.net/user-guide/dev-tools/db-connect.html#access-dbutils 中所述

根据您直接在 databricks 服务器上执行代码的位置(例如,使用 databricks notebook 调用您的项目 egg 文件)或使用 databricks-connect 从您的 IDE 中,您应该初始化 dbutils,如下所示。(其中 spark 是您的 SparkSession)

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)


Rit*_*esh -2

我假设您希望代码在 databricks 集群上运行。如果是这样,则无需导入任何包,因为 Databricks 默认情况下包含 dbutils 的所有必需库。

我尝试在 databricks (python/scala) 笔记本上使用它,而不导入任何库,并且工作正常。

在此输入图像描述