使用 Kryo 和 Spark 序列化 Cassandra 表
Serializing Cassandra Tables with Kryo and Spark
我正在尝试使用 Apache Spark 测试 Kryo 序列化,以便测量使用和不使用序列化的执行时间,并将 kryo 对象流保存到磁盘以模拟 spark 下的缓存。
我设计的测试是将 Cassandra table 存储在序列化的 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 序列化有什么规定吗?
我如何将此 class 注册到 kryo.register?
如果我尝试使用 kryo.register(ClassOf[CassandraRDD]) 注册,我会在尝试执行时遇到以下错误:
Error:(11, 27) class CassandraRDD takes type parameters
kryo.register(classOf[CassandraRDD])
^
请注意,我是 Scala 和 Kryo 的新手。
非常感谢你
请试试这个 CassandraRDD 序列化
kryo.register(classOf[CassandraRDD[Any]])
我正在尝试使用 Apache Spark 测试 Kryo 序列化,以便测量使用和不使用序列化的执行时间,并将 kryo 对象流保存到磁盘以模拟 spark 下的缓存。
我设计的测试是将 Cassandra table 存储在序列化的 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 序列化有什么规定吗? 我如何将此 class 注册到 kryo.register?
如果我尝试使用 kryo.register(ClassOf[CassandraRDD]) 注册,我会在尝试执行时遇到以下错误:
Error:(11, 27) class CassandraRDD takes type parameters
kryo.register(classOf[CassandraRDD])
^
请注意,我是 Scala 和 Kryo 的新手。
非常感谢你
请试试这个 CassandraRDD 序列化
kryo.register(classOf[CassandraRDD[Any]])