Scala 使用spark streaming在cassandra中传输最新数据
我不断有数据从外部来源写入卡桑德拉 现在,我使用spark streaming从cassandra连续读取这些数据,代码如下:Scala 使用spark streaming在cassandra中传输最新数据,scala,apache-spark,cassandra,spark-streaming,bigdata,Scala,Apache Spark,Cassandra,Spark Streaming,Bigdata,我不断有数据从外部来源写入卡桑德拉 现在,我使用spark streaming从cassandra连续读取这些数据,代码如下: val ssc = new StreamingContext(sc, Seconds(5)) val cassandraRDD = ssc.cassandraTable("keyspace2", "feeds") val dstream = new ConstantInputDStream(ssc, cassandraRDD) dstream.foreachR
val ssc = new StreamingContext(sc, Seconds(5))
val cassandraRDD = ssc.cassandraTable("keyspace2", "feeds")
val dstream = new ConstantInputDStream(ssc, cassandraRDD)
dstream.foreachRDD { rdd =>
println("\n"+rdd.count())
}
ssc.start()
ssc.awaitTermination()
sc.stop()
但是,以下行:
val cassandraRDD=ssc.cassandraTable(“键空间2”,“提要”)
每次都从cassandra获取整个表数据。现在,只有保存到表中的最新数据
我想做的是让spark streaming只读取最新的数据,即在上次读取后添加的数据
我怎样才能做到这一点?我试着用谷歌搜索这个,但是得到的关于这个的文档很少
我使用的是spark 1.4.1
、scala 2.10.4
和cassandra 2.1.12
谢谢
编辑:
建议的重复问题(由我提出)不是重复问题,因为它涉及连接spark streaming和cassandra,而这个问题只涉及流式传输最新数据。顺便说一句,通过使用我提供的代码,从cassandra流媒体是可能的。但是,每次都需要整个表,而不仅仅是最新的数据。在Cassandra上会有一些低级工作,允许通知外部系统(索引器、火花流等)进入Cassandra的新突变,请阅读以下内容:目前不可能复制Cassandra的流。看这个,哈。我只是注意到是你问了那个问题。恐怕答案还没有改变。这个问题(由我提出)不是重复的,因为它谈到了连接spark streaming和cassandra,而这个问题只涉及流式传输最新数据。顺便说一句,通过使用我提供的代码,从cassandra流媒体是可能的。但是,它每次都需要整个表,而不仅仅是最新的数据。我认为对于您描述的问题没有现成的解决方案,因为它需要时间序列方式的附加信息,而Cassandra没有维护。我认为您可以使用以“上次处理时间”为边界的CQL查询,而不是以“cassandraTable”为边界的CQL查询。但是,您应该适当地更改数据结构: