Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Serialization 使用Kryo和Spark序列化Cassandra表_Serialization_Cassandra_Apache Spark_Kryo - Fatal编程技术网

Serialization 使用Kryo和Spark序列化Cassandra表

Serialization 使用Kryo和Spark序列化Cassandra表,serialization,cassandra,apache-spark,kryo,Serialization,Cassandra,Apache Spark,Kryo,我试图用ApacheSpark测试Kryo序列化,以测量有序列化和无序列化的执行时间,并将Kryo对象流保存到磁盘,以模拟Spark下的缓存 我设计的测试是将Cassandra表存储在序列化的CassandraRDD对象中 生成CassandraRDD的Scala代码如下所示: import com.datastax.spark.connector._ import org.apache.spark.{SparkConf, SparkContext} object SparkCassandra

我试图用ApacheSpark测试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非常陌生


提前非常感谢

请为CassandraRDD系列试一试

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