给定一个SparkFlumeEvents流(或者说,任何DStream),如何映射到适当的模式,以便可以使用
将流保存到Cassandrastream.saveToCassandra(keyspace,table)
天真的尝试抱怨缺少列。
将stream.map()作为给定对象的最佳方法(看起来很麻烦)?
或......
另一种方法似乎是使用stream.foreachRDD并以某种方式映射到数据帧。鉴于stream方法支持直接保存到cassandra,这看起来也很麻烦。
那么正确的方法是什么?
答案 0 :(得分:0)
通过指定要插入的键空间,tableName和列,使用spark cassandra连接器将流保存到Cassandra中。另一种方法是将数据映射到UDT并将其插入到数据库中。如果您只需要插入数据,我更喜欢将列指定为最快的方式。 文档中的示例完全相同,但您可以使用它的任何变体:
val wc = stream.flatMap(_.split("\\s+"))
.map(x => (x, 1))
.reduceByKey(_ + _)
.saveToCassandra("streaming_test", "words", SomeColumns("word", "count"))