Databricks 连接到 IntelliJ + python 线程“main”中出现错误异常 java.lang.NoSuchMethodError:

Ren*_*ens 4 python databricks databricks-connect

我尝试将我的 databricks 与我的 IDE 连接

我的机器上没有下载 Spark ad/或 scala,但我下载了 pyspark (pip install pyspark)。我构建了必要的环境变量并创建了一个文件夹 Hadoop,在其中放置了一个文件夹 bin,在其中放置了一个 winutils.exe 文件。

这是一个循序渐进的过程,缓慢而稳定地解决了我的所有错误,除了最后一个:

import logging
from pyspark.sql import SparkSession
from pyspark import SparkConf

if __name__ == "__main__":
    spark = SparkSession.builder.getOrCreate()
    spark.sparkContext.setLogLevel("OFF")
Run Code Online (Sandbox Code Playgroud)

给予

1/03/30 15:14:33 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Exception in thread "main" java.lang.NoSuchMethodError: py4j.GatewayServer$GatewayServerBuilder.securityManager(Lpy4j/security/Py4JSecurityManager;)Lpy4j/GatewayServer$GatewayServerBuilder;
    at org.apache.spark.api.python.Py4JServer.<init>(Py4JServer.scala:68)
    at org.apache.spark.api.python.PythonGatewayServer$.main(PythonGatewayServer.scala:37)
    at org.apache.spark.api.python.PythonGatewayServer.main(PythonGatewayServer.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:928)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1007)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Run Code Online (Sandbox Code Playgroud)

所以第一个警告可能是由于我没有安装hadoop/spark。但是,我读到只要 Windows 可执行文件 winutils.exe 位于 Hadoop 的 bin 文件夹中,就应该可以工作。(在我将 winutils 放入该文件夹之前,出现了其他错误,我通过添加 winutils.exe 文件来处理这些错误)所以这是关于线程“main”错误中的异常。

任何想法?

Ale*_*Ott 5

您需要按照文档中的描述卸载 PySpark中的描述卸载 PySpark 。根据文档:

\n
\n

在 Python 中初始化 Spark 上下文时,安装两者会导致错误。这可以通过多种方式体现,包括 \xe2\x80\x9cstream损坏\xe2\x80\x9d 或 \xe2\x80\x9c类未找到\xe2\x80\x9d 错误。如果您的 Python 环境中安装了 PySpark,请确保在安装 databricks-connect 之前将其卸载

\n
\n

所以你需要这样做:

\n
pip uninstall pyspark\npip uninstall databricks-connect\npip install -U databricks-connect==5.5.*  # or X.Y.* to match your cluster version.\n
Run Code Online (Sandbox Code Playgroud)\n