我運行了這段代碼并且有一個錯誤。
import pandas as pd
from pyspark.sql import SparkSession
spark = SparkSession.builder.\
config("spark.jars.repositories", "https://repos.spark-packages.org/").\
config("spark.jars.packages", "saurfang:spark-sas7bdat:2.0.0-s_2.11,org.apache.hadoop:hadoop-aws:2.7.0").\
enableHiveSupport().getOrCreate()
df_spark_temp = spark.read.format('com.github.saurfang.sas.spark').load('18-83510-I94-Data-2016/i94_apr16_sub.sas7bdat')
df_spark_temp.limit(5).toPandas().show()
py4j.protocol.Py4JJavaError: An error occurred while calling o34.load.
: java.lang.NoClassDefFoundError: scala/Product$class
at com.github.saurfang.sas.spark.SasRelation.<init>(SasRelation.scala:48)
at com.github.saurfang.sas.spark.SasRelation$.apply(SasRelation.scala:42)
at com.github.saurfang.sas.spark.DefaultSource.createRelation(DefaultSource.scala:50)
at com.github.saurfang.sas.spark.DefaultSource.createRelation(DefaultSource.scala:39)
at com.github.saurfang.sas.spark.DefaultSource.createRelation(DefaultSource.scala:27)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:350)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:228)
at org.apache.spark.sql.DataFrameReader.$anonfun$load$2(DataFrameReader.scala:210)
at scala.Option.getOrElse(Option.scala:189)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:210)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:185)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
at py4j.ClientServerConnection.run(ClientServerConnection.java:106)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: scala.Product$class
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 23 more
Python 版本:3.9.6
JAVA 版本:17.0.4.1
Pyspark 版本:3.3
我在堆疊溢位中搜索了相同的問題,其中大多數人說這可能是因為 scala 版本。
我之前沒有安裝過 scala,我需要安裝 scala 還是可以更改 JAVA 中的設定?
我輸入 PySpark --version 它顯示
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.3.0
/_/
Using Scala version 2.12.15, Java HotSpot(TM) 64-Bit Server VM, 17.0.4.1
這是否意味著我需要安裝 scala 版本 2.12.15 或者我已經安裝了?
uj5u.com熱心網友回復:
所有庫都必須針對您正在運行的相同 Scala 版本進行編譯。
我對 PySpark 不熟悉,但我看到它至少spark-sas7bdat:2.0.0-s_2.11似乎是為 Scala 2.11 編譯的,因為它的版本號。
如果您使用 Scala 2.12 運行,請尋找 usingspark-sas7bdat:3.0.0-s_2.12代替。
個人注意:這個庫似乎根本沒有維護,如果用于生產代碼,請考慮使用另一個庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/512176.html
