ModuleNotFoundError:没有名为“pyspark.dbutils”的模块

Jea*_*ane 5 pyspark databricks azure-databricks azure-machine-learning-service dbutils

我正在从 Azure 机器学习笔记本运行 pyspark。我正在尝试使用 dbutil 模块移动文件。

from pyspark.sql import SparkSession
    spark = SparkSession.builder.getOrCreate()
    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)
    dbutils.fs.cp("file:source", "dbfs:destination")
Run Code Online (Sandbox Code Playgroud)

我收到此错误: ModuleNotFoundError:没有名为“pyspark.dbutils”的模块 有解决方法吗?

这是另一个 Azure 机器学习笔记本中的错误:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-183f003402ff> in get_dbutils(spark)
      4         try:
----> 5             from pyspark.dbutils import DBUtils
      6             dbutils = DBUtils(spark)

ModuleNotFoundError: No module named 'pyspark.dbutils'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-1-183f003402ff> in <module>
     10         return dbutils
     11 
---> 12 dbutils = get_dbutils(spark)

<ipython-input-1-183f003402ff> in get_dbutils(spark)
      7         except ImportError:
      8             import IPython
----> 9             dbutils = IPython.get_ipython().user_ns["dbutils"]
     10         return dbutils
     11 

KeyError: 'dbutils'
Run Code Online (Sandbox Code Playgroud)

Kas*_*yap 1

显然,databricks 运行时发生了一些变化。所以你的代码曾经可以工作,但现在不行了。

两种选择:

  1. 捕获正确的错误
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
def get_dbutils(spark):
    try:
        from pyspark.dbutils import DBUtils
        dbutils = DBUtils(spark)
    except ModuleNotFoundError:        # <-- changed from ImportError
        import IPython
        dbutils = IPython.get_ipython().user_ns["dbutils"]
    return dbutils

dbutils = get_dbutils(spark)
dbutils.fs.cp("file:source", "dbfs:destination")
Run Code Online (Sandbox Code Playgroud)
  1. 遵循新的指示
def get_dbutils(spark):
  if spark.conf.get("spark.databricks.service.client.enabled") == "true":
    from pyspark.dbutils import DBUtils
    return DBUtils(spark)
  else:
    import IPython
    return IPython.get_ipython().user_ns["dbutils"]
Run Code Online (Sandbox Code Playgroud)

如果您尝试执行此操作以进行单元测试并且需要模拟它,请查看以下内容: https: //stackoverflow.com/a/76018686/496289