【问题标题】:Serializing Cassandra Tables with Kryo and Spark使用 Kryo 和 Spark 序列化 Cassandra 表
【发布时间】:2015-05-23 23:09:19
【问题描述】:

我正在尝试使用 Apache Spark 测试 Kryo 序列化,以测量有无序列化的执行时间,并将 kryo 对象流保存到磁盘以模拟 spark 下的缓存。

我设计的测试是将 Cassandra 表存储在序列化的 CassandraRDD 对象中。

生成 CassandraRDD 的 Scala 代码如下:

import com.datastax.spark.connector._
import org.apache.spark.{SparkConf, SparkContext}

object SparkCassandra {
def main(args: Array[String]): Unit ={


val conf = new SparkConf(true).set("spark.cassandra.connection.host","mycassandraip")
conf.set("spark.serializer","org.apache.spark.serializer.KryoSerializer")
val sc = new SparkContext("local","test",conf)

//Access to cassandra table
val kvRDD = sc.cassandraTable("test","kv")


kvRDD.collect().foreach(println)

}

}

此代码有效,但我怀疑 kvRDD,即 CassandraRDD 对象没有被序列化。

是否有关于什么可以和不能用 Kryo 序列化的规则? 我如何用 kryo.register 注册这个类?

如果我尝试使用 kryo.register(ClassOf[CassandraRDD]) 注册,我在尝试执行时收到以下错误:

Error:(11, 27) class CassandraRDD takes type parameters
    kryo.register(classOf[CassandraRDD])
                      ^

请注意,我对 Scala 和 Kryo 非常陌生。

非常感谢您

【问题讨论】:

    标签: serialization cassandra apache-spark kryo


    【解决方案1】:

    CassandraRDD 序列化请试试这个

     kryo.register(classOf[CassandraRDD[Any]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多