中間ファイルなしで Node.js から Flume-NG にデータを移動できる機能的なプロジェクトはありますか?
Node.js から Flume にデータを移動することはより一般的なニーズだと思っていましたが、そうではないようです。
これを試みたと思われる多くのプロジェクトを見つけましたが、すべて約 3 年前に放棄されたようで、現在のバージョンでは機能しません。古いバージョンのflumeでも動作するものがあるようですが、APIはflume-ngで大幅に変更され、適用できなくなりました。
Node.js 用の avro および thrift モジュールを見つけました。thrift には node.js のサポートがあり、これは単純明快であることを示しているように見えますが、これは機能していません。Flume で使用するトランスポート/プロトコルに関する十分な情報がない可能性があります。 -NG、または単によく理解していないだけかもしれません。
車輪を再発明する前に、誰かが私を正しい方向に向けることができますか?
これは私が持っている現在のノードコードです。ECONNREFUSED を生成します。
#!/usr/local/bin/node
var thrift = require('thrift');
//var ThriftTransports = require('thrift/transport');
//var ThriftProtocols = require('thrift/protocol');
var Flume = require('./gen-nodejs/ThriftSourceProtocol');
var ttypes = require('./gen-nodejs/flume_types');
transport = thrift.TBufferedTransport();
protocol = thrift.TBinaryProtocol();
//transport = ThriftTransports.TBufferedTransport();
//protocol = ThriftProtocols.TBinaryProtocol();
var connection = thrift.createConnection("127.0.0.1", 51515,{
transport: transport,
protocol: protocol
});
connection.on('error', function(err) {
console.error(err);
});
var client = thrift.createClient(Flume, connection);
var myEvent = new ttypes.ThriftFlumeEvent();
myEvent.headers = {};
myEvent.body = "body";
client.append(myEvent, function(err,data) {
if (err) {
// handle err
} else {
// data == [ttypes.ColumnOrSuperColumn, ...]
}
connection.end();
});