Apache spark Spark 1.6中的数据集
我正在评估将现有RDD代码替换为Dataset。对于我的一个用例,我无法将数据集映射到另一个用例类 这就是我要做的Apache spark Spark 1.6中的数据集,apache-spark,apache-spark-sql,spark-dataframe,apache-spark-dataset,Apache Spark,Apache Spark Sql,Spark Dataframe,Apache Spark Dataset,我正在评估将现有RDD代码替换为Dataset。对于我的一个用例,我无法将数据集映射到另一个用例类 这就是我要做的 case class MyMap(map: Map[String, String]) case class V1(a: String, b: String){ def toMyMap: MyMap = { MyMap(Map(a->b)) } def toStr: String = { a } } object MyApp extends
case class MyMap(map: Map[String, String])
case class V1(a: String, b: String){
def toMyMap: MyMap = {
MyMap(Map(a->b))
}
def toStr: String = {
a
}
}
object MyApp extends App {
//Get handle to sqlContext and other useful stuff here.
val df1 = sqlContext.createDataset(Seq(V1("2015-05-01", "data1"), V1("2015-05-01", "data2"))).toDF()
df1.as[V1].map(_.toMyMap).show() //Errors out. Added the exception below.
df1.as[V1].map(_.toStr).show() //Works fine.
}
任何帮助都将不胜感激
除以下情况外:
线程“main”org.apache.spark.sparkeException中的异常:作业
由于阶段失败而中止:任务不可序列化:
java.io.NotSerializableException:
scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$1
序列化堆栈:
-对象不可序列化(类:scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$1,
值:包(lang)
-字段(类:scala.reflect.internal.Types$ThisType,名称:sym,类型:类scala.reflect.internal.Symbols$Symbol)
-对象(类scala.reflect.internal.Types$UniqueThisType,java.lang.type)
-字段(类:scala.reflect.internal.Types$TypeRef,名称:pre,类型:类scala.reflect.internal.Types$type)
-对象(类scala.reflect.internal.Types$ClassNoArgsTypeRef,String)
-字段(类:scala.reflect.internal.Types$TypeRef,名称:normalized,类型:类scala.reflect.internal.Types$type)
-对象(类scala.reflect.internal.Types$AliasNoArgsTypeRef,String)
-字段(类:org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$6,名称:
keyType$1,类型:class scala.reflect.api.Types$TypeApi)
-对象(类org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$6,)
-字段(类:org.apache.spark.sql.catalyst.expressions.MapObjects,名称:function,类型:interface scala.Function1)
-对象(类org.apache.spark.sql.catalyst.expressions.MapObjects,MapObjects(,invoke(upcast)('map,MapType(StringType,StringType,true))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、keyArray、ArrayType(StringType,true))、StringType)
-字段(类:org.apache.spark.sql.catalyst.expressions.Invoke,名称:targetObject,类型:class
org.apache.spark.sql.catalyst.expressions.Expression)
-对象(类org.apache.spark.sql.catalyst.expressions.Invoke,Invoke(映射对象(,Invoke(上传)('map,映射类型(StringType,StringType,true)))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、keyArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;))
-writeObject数据(类:scala.collection.immutable.List$SerializationProxy)
-对象(类scala.collection.immutable.List$SerializationProxy,scala.collection.immutable.List$SerializationProxy@7e78c3cf)
-writeReplace数据(类:scala.collection.immutable.List$SerializationProxy)
-对象(类scala.collection.immutable.$colon$colon,List)(调用(mapobjects(,invoke(upcast)('map,MapType(StringType,StringType,true)))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、keyArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;),
调用(mapobjects(,invoke(upcast)('map,MapType(StringType,StringType,true))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、valueArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;))
-字段(类:org.apache.spark.sql.catalyst.expressions.StaticInvoke,名称:
参数,类型:接口scala.collection.Seq)
-对象(类org.apache.spark.sql.catalyst.expressions.StaticInvoke,
静态调用(类)
org.apache.spark.sql.catalyst.util.ArrayBasedMapData$,ObjectType(接口
scala.collection.Map)、toScalaMap、invoke(mapobjects(、invoke(upcast('Map、MapType(StringType、StringType、true))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、keyArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;)、invoke(映射对象(、invoke(上传('map、映射类型(StringType、StringType、true))、invoke-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、valueArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;)),true)
-writeObject数据(类:scala.collection.immutable.List$SerializationProxy)
-对象(类scala.collection.immutable.List$SerializationProxy,scala.collection.immutable.List$SerializationProxy@377795c5)
-writeReplace数据(类:scala.collection.immutable.List$SerializationProxy)
-对象(类scala.collection.immutable.$colon$colon,列表(staticinvoke)(类
org.apache.spark.sql.catalyst.util.ArrayBasedMapData$,ObjectType(接口
scala.collection.Map)、toScalaMap、invoke(mapobjects(、invoke(upcast('Map、MapType(StringType、StringType、true))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、keyArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;)、invoke(映射对象(、invoke(上传('map、映射类型(StringType、StringType、true))、invoke-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、valueArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;)、true)
-字段(类:org.apache.spark.sql.catalyst.expressions.NewInstance,名称:
参数,类型:接口scala.collection.Seq)
-对象(类org.apache.spark.sql.catalyst.expressions.NewInstance,
newinstance(类collector.MyMap、staticinvoke(类
org.apache.spark.sql.catalyst.util.ArrayBasedMapData$,ObjectType(接口
scala.collection.Map)、toScalaMap、invoke(mapobjects(、invoke(upcast('Map、MapType(StringType、StringType、true))-
字段(类:“scala.collection.immutable.Map”,名称:“Map”),-root
类别:
“collector.MyMap”)、keyArray、ArrayType(StringType,true))、StringType)、数组、ObjectType(类
[Ljava.lang.Object;)、invoke(映射对象(、invoke(上传('map、映射类型(StringType、StringType、true))、invoke-
字段(类别:“sc