Apache spark saveToCassandra()如何工作?

Apache spark saveToCassandra()如何工作?,apache-spark,cassandra,spark-cassandra-connector,Apache Spark,Cassandra,Spark Cassandra Connector,我想知道我什么时候使用rdd.saveToCassandra()这个函数是一次性将当前rdd的所有元素保存到表cassandra中,还是像map函数那样逐个元素保存,后者逐个元素处理每个rdd的元素并返回新的解析元素 谢谢第一个选项和第二个选项都没有。它在按配置大小(每批1024字节,每Spark任务1000批)将数据分组后写入数据。如果你对细节感兴趣-它是开源的,那么检查并开始吧 更新为对评论的回应。您可以将RDD拆分为多个RDD,并使用saveToCassandra保存每个RDD。RDD拆分

我想知道我什么时候使用rdd.saveToCassandra()这个函数是一次性将当前rdd的所有元素保存到表cassandra中,还是像map函数那样逐个元素保存,后者逐个元素处理每个rdd的元素并返回新的解析元素


谢谢

第一个选项和第二个选项都没有。它在按配置大小(每批1024字节,每Spark任务1000批)将数据分组后写入数据。如果你对细节感兴趣-它是开源的,那么检查并开始吧


更新为对评论的回应。您可以将RDD拆分为多个RDD,并使用
saveToCassandra
保存每个RDD。RDD拆分目前还不是Spark的标准功能,所以您需要像Silex这样的第三方库。查看
flatmuExpartitions

文档,非常感谢您的回答,我之所以发布这个问题是因为我有一个问题:我有来自几个主题kafka的流式数据,我想将每行RDD保存到特定的表cassandra中,我的RDD是名为Stock的case类的集合(test12017/07/23 00:01:02,14,状态)股票(test12017/07/23 00:01:03,78,状态)股票(test22017/07/23 00:01:02,86,状态)股票(test22017/07/23 00:01:03,69,状态)股票(test32017/07/23 00:01,46,状态)股票(test32017/07/23 00:01,20,状态)我想得到RDD中每一行的第一个元素,它代表我的主题名称,并将其作为saveToCassandra中的表名。有什么想法吗?这是我的代码,没有我想要的吗?Val messages=KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](ssc,kafkaParams,TopicSet)。map(u.\u 2)messages.foreachRDD(rdd=>{val stockParsed=rdd.map(line=>line.split(','))val dd=stockParsed.map(s=>newstock(s(0.toString,s(1.toString,s(2.toString,s(3.toString))val ss=rdd.flatMap(line=>line.split(“,”).collect().foreach(a=>{if(a.contains(“test”){”)val aa=a//println(a)dd.saveToCassandra(keyspace、aa、SomeColumns(“主题名称”、“日期时间”、“度量”、“状态”))当我运行这个程序时,RDD的内容写在三个表中,所以这不是我想要的。i@Vitaliy我不熟悉scala,也从未使用过这个函数FlatmuExpartitions。你能给我一些使用它的例子吗?如果你想了解更多我的问题,请看这个:[链接]