Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Node.js 哪种技术可以连接Cassandra和NodeJS?_Node.js_Mongodb_Apache Spark_Architecture_Cassandra - Fatal编程技术网

Node.js 哪种技术可以连接Cassandra和NodeJS?

Node.js 哪种技术可以连接Cassandra和NodeJS?,node.js,mongodb,apache-spark,architecture,cassandra,Node.js,Mongodb,Apache Spark,Architecture,Cassandra,我正在使用spark streaming读取TCP服务器,然后将数据插入Cassandra,我必须进一步将其推送到UI,为了推送,我决定选择NodeJS。但我没有得到任何技术,可以与卡桑德拉以及诺德斯交谈。下面是我的架构,我无法找到可以取代?的技术。如果可以直接将数据从Mongo推送到NodeJS,我也愿意用MongoDB来更改Cassandra。但到目前为止,我使用的是Cassandra,因为它本身就支持Hadoop 看看datastax节点的cassandra驱动程序:项目。它具有cassa

我正在使用
spark streaming
读取
TCP服务器
,然后将数据插入
Cassandra
,我必须进一步将其推送到UI,为了推送,我决定选择
NodeJS
。但我没有得到任何技术,可以与卡桑德拉以及诺德斯交谈。下面是我的架构,我无法找到可以取代
的技术。如果可以直接将数据从Mongo推送到NodeJS,我也愿意用
MongoDB
来更改Cassandra。但到目前为止,我使用的是Cassandra,因为它本身就支持Hadoop


看看datastax节点的cassandra驱动程序:项目。它具有cassandra行流和管道功能,您可以使用它将cassandra数据推送到节点、处理,然后根据所需的体系结构通过WebSocket导出

让您的流客户端保持打开状态—这需要作为处理错误的持久节点服务器运行—类似这样的操作应该会获取新的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秒轮询一次函数。其中一种方法应该有效

您检查过NiFi了吗

在您的情况下,您可以将Spark流结果写入Kafka、HDFS,甚至直接写入NiFi,但我个人更喜欢写入Kafka或其他消息队列。 从NiFi,您可以向Kafka写信,如果您需要的话,还可以向您的Node JS应用程序发送请求。在我的例子中,我使用的是Meteor,所以只要从Kafka推到MongoDB就会自动刷新UI


我希望这会有所帮助。

谢谢@steveinatorx的回复,我已经检查了datastax#stream API,但它不会持续从Cassandra获取数据,而是会将所有数据显示一次。如果您以其他方式实现了相同的功能,请在此处发布。谢谢。
#stream
会返回最新插入的记录吗?或者它会带来旧记录,我们也会触发相同的查询?如果使用Kafka,我们的解决方案之一是,Kafka NodeJS会继续阅读,然后使用套接字通信推送到UI。感谢@alghimo的回复,请详细说明您的最后一点“仅仅从Kafka推送到MongoDB会自动刷新UI,你是在使用Meteor将数据写入MongoDB吗?”Meteor捆绑了一个MongoDB实例,因此当你启动应用程序时,也会有一个MongoDB启动。然后,如果你将数据插入MongoDB,Meteor将“看到”它并刷新UI。