【问题标题】:How to load databricks package dbutils in pyspark如何在pyspark中加载databricks包dbutils
【发布时间】:2019-01-23 21:40:01
【问题描述】:

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

dbutils.widgets.text('config', '', 'config')

它给我一个错误说

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

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

感谢您的帮助

【问题讨论】:

  • 在一个包/模块中我有from pyspark.dbutils import DBUtilsdef get_secerts(dbutils: DBUtils): 然后你可以像在笔记本中一样使用dbutils.secrets.get()

标签: pyspark databricks


【解决方案1】:

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

def get_db_utils(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

见:https://docs.microsoft.com/en-gb/azure/databricks/dev-tools/databricks-connect#access-dbutils

【讨论】:

    【解决方案2】:

    如中所述 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)
    

    【讨论】:

      【解决方案3】:

      在 Scala 中你可以

      import com.databricks.dbutils_v1.DBUtilsHolder.dbutils
      

      并按照以下链接获得更多依赖..

      https://docs.databricks.com/user-guide/dev-tools/dbutils.html

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 是的 Ritesh,但我没有 databricks 集群。因此,只需找到导入包的替代方法。
        • 据我所知,如果你想使用 dbutils,你必须在 databricks 集群上运行你的代码。如果您找到任何替代方案,请告诉我。
        猜你喜欢
        • 2019-05-25
        • 1970-01-01
        • 1970-01-01
        • 2019-12-24
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        相关资源
        最近更新 更多