我试着看书 csv
, json
以及 parquet
文件使用 spark
. 但是,在每种情况下,我都会在问题的末尾列出错误。
我试过在 spark-shell
:
val df = spark.read.csv('a.csv')
我也试过在 pyspark
:
df = spark.read.csv('a.csv')
对于所有文件类型,我都会遇到相同的错误。这个 spark-version
我用的是 2.4.0
,带 Package bin-hadoop-2.7
.
我也有 spark-2.3.3
安装。但是,我的环境变量 SPARK_HOME
已编辑为指向 spark-2.4.4
安装。
当我导出时 SPARKHOME
指向 spark-2.3.3
版本,一切正常。所以这是一些安装问题。
我不知道我应该做些什么改变 spark-2.4.0
开始工作? pyspark
也抛出相同的错误,开头还有一行:
py4j.protocol.Py4JJavaError: An error occurred while calling o30.json.
错误:
java.lang.NoClassDefFoundError: org/apache/spark/sql/execution/datasources/v2/FileDataSourceV2
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at scala.collection.convert.Wrappers$JIteratorWrapper.next(Wrappers.scala:43)
at scala.collection.Iterator$class.foreach(Iterator.scala:891)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike$class.filterImpl(TraversableLike.scala:247)
at scala.collection.TraversableLike$class.filter(TraversableLike.scala:259)
at scala.collection.AbstractTraversable.filter(Traversable.scala:104)
at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:630)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:194)
at org.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:391)
at org.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:325)
... 49 elided
Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.execution.datasources.v2.FileDataSourceV2
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 80 more
1条答案
按热度按时间jjhzyzn01#
filedatasourcev2是在spark的更高版本中引入的特性,因此它的出现表明您可能使用了错误的二进制文件来启动上下文。
我保证
这个
$PATH
变量不包含任何冲突的二进制文件。如果您使用的是spark shell:
type spark-shell || which spark-shell
产生预期结果。否则,您可能希望直接运行$spark\u home/bin/spark shell。如果您直接使用spark submit:
type spark-submit || which spark-submit
产生预期结果。如果
echo $PATH
包含具有冲突二进制文件的路径,您可能希望将路径设置为更简单的路径,或者至少删除冲突路径,例如.../anaconda3/bin/
(例如,如果使用水蟒)。$SPARK_HOME/conf/spark-defauls.conf
没有任何选项可以从任何地方添加冲突的jar。检查spark.driver.extraClassPath
类似的配置可能会添加冲突的jar。对选项的环境变量执行相同的检查:
echo $SPARK_SUBMIT_OPTS