Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/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
Scala 使用spark streaming在cassandra中传输最新数据_Scala_Apache Spark_Cassandra_Spark Streaming_Bigdata - Fatal编程技术网

Scala 使用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

我不断有数据从外部来源写入卡桑德拉

现在,我使用spark streaming从cassandra连续读取这些数据,代码如下:

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查询。但是,您应该适当地更改数据结构: