我正在使用spark streaming
阅读TCP server
,然后将数据插入Cassandra
,我必须进一步推送到用户界面,推送我决定去{{1} }。但我没有得到任何可以与Cassandra以及NodeJS交流的技术。下面是我的架构,我无法找到可以替换NodeJS
的技术。如果可以直接将数据从Mongo推送到NodeJS,我也可以使用?
更改Cassandra。但截至目前,我正在使用Cassandra,因为它本身支持MongoDB
。
答案 0 :(得分:2)
查看datastax nodejs-cassandra驱动程序:https://github.com/datastax/nodejs-driver项目。这有cassandra行流和管道功能,您可以使用它将cassandra数据推送到节点,进程,然后根据所需的体系结构通过websockets导出。
让您的流客户端保持打开状态 - 这需要作为持久性节点服务器运行来处理错误 - 这样的事情应该会获取新的cassandra数据:
var streamCassandra = function(){
client.stream('SELECT time, val FROM temperature WHERE station_id=', ['abc'])
.on('readable', function () {
//readable is emitted as soon a row is received and parsed
var row;
while (row = this.read()) {
console.log('time %s and value %s', row.time, row.val);
}})
.on('error', function (err) {
//handle err
})
.on('end', streamCassandra);
};
将您的流客户端打包成一个递归函数,该函数再次调用自身(' end',streamCassandra)。如果你不需要那种并发性,你也可以使用setInterval每隔x秒轮询一次该函数。其中一种方法应该有效
答案 1 :(得分:1)
你检查过NiFi吗?
在您的情况下,您可以将您的Spark Streaming结果写入Kafka,HDFS,甚至直接写入NiFi,但我个人更喜欢写入Kafka或其他一些消息队列。 从NiFi,您可以写信给Kafka,并向您的Node JS应用程序发送请求,如果这是您需要的。就我而言,我使用Meteor,所以只需从Kafka推送到MongoDB就会自动刷新UI。
我希望它有所帮助。