Kau*_*hal 0 java scala apache-spark spark-streaming apache-spark-sql
我有一个Spark (version 1.3.1)
申请.其中,我试图将一个转换Java bean RDD
JavaRDD<Message>
为Dataframe,它有许多具有不同数据类型的字段(整数,字符串,列表,映射,双精度).
但是,当我执行我的代码时.
messages.foreachRDD(new Function2<JavaRDD<Message>,Time,Void>(){
@Override
public Void call(JavaRDD<Message> arg0, Time arg1) throws Exception {
SQLContext sqlContext = SparkConnection.getSqlContext();
DataFrame df = sqlContext.createDataFrame(arg0, Message.class);
df.registerTempTable("messages");
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
/06/12 17:27:40 INFO JobScheduler: Starting job streaming job 1434110260000 ms.0 from job set of time 1434110260000 ms
15/06/12 17:27:40 ERROR JobScheduler: Error running job streaming job 1434110260000 ms.1
scala.MatchError: interface java.util.List (of class java.lang.Class)
at org.apache.spark.sql.SQLContext$$anonfun$getSchema$1.apply(SQLContext.scala:1193)
at org.apache.spark.sql.SQLContext$$anonfun$getSchema$1.apply(SQLContext.scala:1192)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
at org.apache.spark.sql.SQLContext.getSchema(SQLContext.scala:1192)
at org.apache.spark.sql.SQLContext.createDataFrame(SQLContext.scala:437)
at org.apache.spark.sql.SQLContext.createDataFrame(SQLContext.scala:465)
Run Code Online (Sandbox Code Playgroud)
如果Message
有许多不同的字段List
,并且错误消息指向List
匹配错误,那就是问题.此外,如果您查看源代码,您可以看到List
不在匹配中.
但除了在源代码中进行挖掘之外,Java选项卡下的文档中也清楚地说明了这一点:
目前,Spark SQL不支持包含嵌套或包含复杂类型(如Lists或Arrays)的JavaBean.
您可能希望切换到Scala,因为它似乎在那里得到支持:
案例类也可以嵌套或包含复杂类型,如序列或数组.此RDD可以隐式转换为DataFrame,然后注册为表.
所以解决方案是使用Scala或List
从JavaBean中删除.
作为最后的手段,您可以查看SQLUserDefinedType来定义List
应该如何保留它,也许可以将它们一起破解.
归档时间: |
|
查看次数: |
3673 次 |
最近记录: |