Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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
Scala Spark:GenericMutableRow不能强制转换为java.lang.Byte和<;无>;这不是一个术语_Scala_Apache Spark_Spark Cassandra Connector - Fatal编程技术网

Scala Spark:GenericMutableRow不能强制转换为java.lang.Byte和<;无>;这不是一个术语

Scala Spark:GenericMutableRow不能强制转换为java.lang.Byte和<;无>;这不是一个术语,scala,apache-spark,spark-cassandra-connector,Scala,Apache Spark,Spark Cassandra Connector,我试图将Spark(v.1.6)数据帧中的数据存储到Cassandra。我成功地运行了页面上的示例,但是,我仍然坚持使用自己的代码。考虑下面的片段: case class MyCassandraRow(id : Long, sfl : Seq[Float]) df.map(r => MyCassandraRow( r.getAsLong(0), r.getAs[MySeqFloatWrapper]("sfl").getSeq()) ).saveTo

我试图将Spark(v.1.6)数据帧中的数据存储到Cassandra。我成功地运行了页面上的示例,但是,我仍然坚持使用自己的代码。考虑下面的片段:

case class MyCassandraRow(id : Long, sfl : Seq[Float])

df.map(r => 
   MyCassandraRow(
        r.getAsLong(0),
        r.getAs[MySeqFloatWrapper]("sfl").getSeq())
).saveToCassandra("keyspace", "table")
MySeqFloatWrapper
是一个UDT,我写道,它有一个方法
getSeq()
,并返回一个
Seq[Float]

不幸的是,如果我运行这个代码,我会得到一个

java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericMutableRow cannot be cast to java.lang.Byte
实际上,即使我这样做(如果我做了
行(r.getLong(0))
),我也会得到这个异常,但如果我写:

df.map(r => r.getLong(0)).collect()
另一方面,如果我在case类周围添加一行,然后写

df.map(r => 
  Row(
   MyCassandraRow(
        r.getAsLong(0),
        r.getAs[MySeqFloatWrapper]("sfl").getSeq())
  )
).saveToCassandra("keyspace", "table")
我得到以下例外情况:

scala.ScalaReflectionException: <none> is not a term
scala.ScalaReflectionException:不是术语

我刚刚意识到
ClassCastException
与我的UDT
myseqfloatrapper
和我在那里定义的
sqlType
有关,显然,就Spark 1.5而言,它运行良好,但Spark 1.6不再运行(另请参见)

如果您需要一个模板来了解如何正确定义UDT,请参见上的
VectorUDT
示例