Apache spark Spark流模式

Apache spark Spark流模式,apache-spark,cassandra,spark-streaming,Apache Spark,Cassandra,Spark Streaming,给定一个SparkFlumeEvents流(或者说,任何数据流),如何映射到适当的模式,以便使用 stream.saveToCassandra(keyspace,table) 天真的尝试抱怨缺少列 将stream.map()转换为给定对象(看起来很麻烦)的最佳方法是什么 或者 另一种方法似乎是使用stream.foreachRDD并以某种方式映射到数据帧。考虑到stream方法支持直接保存到cassandra,这似乎也很麻烦 那么正确的方法是什么呢?使用spark Cassandra连接器,通

给定一个SparkFlumeEvents流(或者说,任何数据流),如何映射到适当的模式,以便使用

stream.saveToCassandra(keyspace,table)
天真的尝试抱怨缺少列

将stream.map()转换为给定对象(看起来很麻烦)的最佳方法是什么

或者

另一种方法似乎是使用stream.foreachRDD并以某种方式映射到数据帧。考虑到stream方法支持直接保存到cassandra,这似乎也很麻烦


那么正确的方法是什么呢?

使用spark Cassandra连接器,通过指定要插入的键空间、表名和列,将流保存到Cassandra中。另一种方法是将数据映射到UDT并将其插入数据库。如果只需要插入数据,我更喜欢指定列作为最快的方法。 文档中的示例与此完全相同,但您可以使用其任何变体:

val wc = stream.flatMap(_.split("\\s+"))
    .map(x => (x, 1))
    .reduceByKey(_ + _)
    .saveToCassandra("streaming_test", "words", SomeColumns("word", "count")) 

但是,您的代码是否假设传入的流具有正确的列?我在文档中看到过这种方法,但我的主要问题更多地围绕转换和映射模式的概念。例如,我可能需要以自定义方式反序列化流的字节,或者执行列映射。我想知道指定这些映射/解码器的最干净的方法是什么?