我正在64位PC上使用Windows 11 Pro。我已经按照说明下载并设置了Hadoop环境(版本3. 3. 1),并将Winutils.exe文件(hadoop-3. 0. 0版本)存储在“bin”文件夹中,下载了Spark的等效版本(版本3. 3. 1),创建了新的环境变量,并在我的C:驱动器。另外,我的JAVA_HOME
路径设置为C:\Program Files\Java\jdk-18\bin\java.exe
。
我可以使用“spark-shell”命令访问Scala解释器,但无法使用“pyspark”或.“\pyspark”命令访问PySpark解释器。我还在Anaconda中安装了pyspark(3.2.1)和py 4j(0.10.9.3)库,但当我在Powershell或Jupyter Notebook中运行“pyspark”命令时,收到以下错误。
Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x1f97cf0d) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x1f97cf0d
at org.apache.spark.storage.StorageUtils$.<init>(StorageUtils.scala:213)
at org.apache.spark.storage.StorageUtils$.<clinit>(StorageUtils.scala)
at org.apache.spark.storage.BlockManagerMasterEndpoint.<init>(BlockManagerMasterEndpoint.scala:110)
at org.apache.spark.SparkEnv$.$anonfun$create$9(SparkEnv.scala:348)
at org.apache.spark.SparkEnv$.registerOrLookupEndpoint$1(SparkEnv.scala:287)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:336)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:191)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:460)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:238)
at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
at py4j.ClientServerConnection.run(ClientServerConnection.java:106)
at java.base/java.lang.Thread.run(Thread.java:833)
1条答案
按热度按时间yqlxgs2m1#
谢谢你的替代解决方案。经过一些研究,我能够使用以下方法建立一个工作版本的PySpark解释器:
1.下载最新版本的Java SDK并在“环境变量”中将%JAVA_HOME%变量设置为正确的路径。
1.下载 hadoop-3.3.1-src.tar.gz 并解压缩,然后将%HADOOP_HOME%变量设置为“环境变量”中的正确路径。
1.下载 spark-3.3.1-bin-hadoop 3.tgz 并解压缩,然后将%SPARK_HOME%变量设置为“环境变量”中的正确路径。
1.从 “https://github.com/steveloughran/winutils/tree/master/hadoop-3.0.0/bin ' 下载Winutils.exe,并将可执行文件放在 ”\spark\bin' 目录中。
1.使用以下命令检查Windows Subsystem for Linux在Docker Desktop和不同Linux Distro之间是否具有等效性:〉wsl -l -v。如果没有,则在命令提示符下或Powershell中使用以下命令将WSL更新为版本2:〉wsl --设置版本(发行版名称)2.
1.使用以下命令设置本地元存储区:〉mkdir C:\tmp\配置单元。
1.然后:〉C:\hadoop\bin\winutils.exe chmod 777 /tmp/配置单元.
1.导航到Spark可执行文件安装所在的正确文件路径:〉cd C:\spark\bin(例如)。
1.在C:\spark\bin〉提示符下,键入“pyspark”命令:C:\Spark\斌〉Spark.
这似乎起作用了!