【问题标题】:Which technology can connect with Cassandra as well as NodeJS?哪种技术可以连接 Cassandra 以及 NodeJS?
【发布时间】:2017-01-18 00:32:18
【问题描述】:

我正在使用spark streaming 读取TCP server,然后将数据插入Cassandra,我必须进一步推送到UI,为了推送我决定使用NodeJS。但是我没有得到任何可以与 Cassandra 和 NodeJS 对话的技术。下面是我的架构,我无法找到可以替换 ? 的技术,如果可以直接将数据从 Mongo 推送到 NodeJS,我也愿意将 Cassandra 更改为 MongoDB。但到目前为止,我正在使用 Cassandra,因为它对 Hadoop 具有原生支持。

【问题讨论】:

    标签: node.js mongodb apache-spark architecture cassandra


    【解决方案1】:

    查看 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);
    };
    

    将您的流客户端包装到一个递归函数中,该函数再次调用自身 on('end', streamCassandra)。如果您不需要这种并发性,您也可以每隔 x 秒使用 setInterval 轮询一次函数。其中一种方法应该有效

    【讨论】:

    • 感谢@steveinatorx 的回复,我已经检查了datastax #stream API,但它不会连续从Cassandra 获取数据,而是会带来所有数据并显示一次。如果您以其他方式实现了相同的功能,请在此处发布。谢谢。
    • #stream 会返回最新插入的记录,还是会带来旧记录以及我们正在触发相同的查询?
    【解决方案2】:

    你检查过 NiFi 吗?

    https://nifi.apache.org/

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

    希望对你有帮助。

    【讨论】:

    • 我们使用 Kafka 的解决方案之一,并且从 Kafka NodeJS 将继续读取,然后使用套接字通信它将推送到 UI。
    • 感谢@alghimo 的回复,请详细说明您的最后一点“如何从Kafka 推送到MongoDB 会自动刷新UI,您是否使用Meteor 向MongoDB 写入数据?”
    • Meteor 捆绑了一个 MongoDB 实例,因此当您启动应用程序时,也会启动一个 MongoDB。然后,如果您将数据插入 MongoDB,Meteor 将“看到”它并刷新 UI。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多