Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark SQL错误读取JSON文件:java.lang.ClassNotFoundException:scala.collection.GenTraversableOnce$class_Json_Apache Spark_Apache Spark Sql - Fatal编程技术网

Spark SQL错误读取JSON文件:java.lang.ClassNotFoundException:scala.collection.GenTraversableOnce$class

Spark SQL错误读取JSON文件:java.lang.ClassNotFoundException:scala.collection.GenTraversableOnce$class,json,apache-spark,apache-spark-sql,Json,Apache Spark,Apache Spark Sql,我正在尝试使用Java中的Spark SQL读取JSON文件。 这是我的密码 import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.SQLContext; ... JavaSparkContext jsc = new JavaSparkContex

我正在尝试使用Java中的Spark SQL读取JSON文件。 这是我的密码

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;
...
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
SQLContext sqlContext = new SQLContext(jsc);
DataFrame df = sqlContext.jsonFile("~/test.json");
df.printSchema();
df.registerTempTable("test");
...
我制作了简单的JSON“test.JSON”,使其变得简单:

{
   "name": "myname"
}
当我试图运行代码时,出现错误消息:

efg
17/03/30 10:02:26 INFO BlockManagerMasterEndpoint: Registering block manager 10.6.86.82:36824 with 1948.2 MB RAM, BlockManagerId(driver, 10.6.86.82, 36824)
17/03/30 10:02:26 INFO BlockManagerMaster: Registered BlockManager BlockManagerId(driver, 10.6.86.82, 36824)
17/03/30 10:02:26 INFO StandaloneSchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
at org.apache.spark.sql.sources.CaseInsensitiveMap.<init>(ddl.scala:344)
at org.apache.spark.sql.sources.ResolvedDataSource$.apply(ddl.scala:219)
at org.apache.spark.sql.SQLContext.load(SQLContext.scala:697)
at org.apache.spark.sql.SQLContext.jsonFile(SQLContext.scala:572)
at org.apache.spark.sql.SQLContext.jsonFile(SQLContext.scala:553)
at sugi.kau.sparkonjava.SparkSQL.main(SparkSQL.java:32)
Caused by: java.lang.ClassNotFoundException: scala.collection.GenTraversableOnce$class
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
17/03/30 10:02:26 INFO SparkContext: Invoking stop() from shutdown hook
...
efg
17/03/30 10:02:26信息块管理器MasterEndpoint:使用1948.2 MB RAM注册块管理器10.6.86.82:36824,块管理器RID(驱动程序,10.6.86.82,36824)
17/03/30 10:02:26信息BlockManagerMaster:Registered BlockManager BlockManagerRid(驱动程序,10.6.86.8236824)
17/03/30 10:02:26信息Standalones SchedulerBackend:SchedulerBackend在到达minRegisteredResourcesRatio:0.0后已准备好进行调度
线程“main”java.lang.NoClassDefFoundError中出现异常:scala/collection/GenTraversableOnce$class
位于org.apache.spark.sql.sources.caseinsensitiviemap.(ddl.scala:344)
位于org.apache.spark.sql.sources.resolvedatasource$.apply(ddl.scala:219)
位于org.apache.spark.sql.SQLContext.load(SQLContext.scala:697)
位于org.apache.spark.sql.SQLContext.jsonFile(SQLContext.scala:572)
位于org.apache.spark.sql.SQLContext.jsonFile(SQLContext.scala:553)
位于sugi.kau.sparkonjava.SparkSQL.main(SparkSQL.java:32)
原因:java.lang.ClassNotFoundException:scala.collection.GenTraversableOnce$class
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 还有6个
17/03/30 10:02:26信息SparkContext:从关机挂钩调用stop()
...

感谢文档spark中的函数jsonFile(字符串路径): 加载JSON文件(每行一个对象),将结果作为数据帧返回。(注意,jsonFile被read().json()替换)

因此,每行应该有一个对象,并且源文件应该如下所示:

  {"name": "myname"}
  {"name": "myname2"}
  .....

我按照您所说的更改了json文件,但错误消息仍然存在,我使用的是spark 2.11 SQLContext中没有.read(),只有.jsonfiley您的意思是spark 2.1.0?在这个版本中,您已经阅读了方法,感谢您的回复。我明白了。我使用旧方法获得sparkconf、javasparkcontext和sqlcontext的spark连接。使用新的一个sparkSession方法read是可用的。现在,读取JSON文件工作正常