このライブラリはストリーム処理解析のためのフレームワークです。これは、大量のデータのストリーム処理を行う必要がある Go プログラムのライブラリとして使用することを目的としています。
これは、ソースを 1 つ以上の演算子に接続し、シンクで終わるグラフで構成されます。オペレーターは go チャネルを使用してデータをある者から別の者に渡します。オブジェクトをスナッピーにエンコードするグラフの例は次のとおりです。
var from *util.MemoryBuffer
// fill up from
var to *util.MemoryBuffer
ch := stream.NewOrderedChain()
ch.Add(source.NewNextReaderSource(from))
timingOp, _, dur := timing.NewTimingOp()
ch.Add(timingOp)
ch.Add(compress.NewSnappyEncodeOp())
ch.Add(sink.NewWriterSink(to))
ch.Start()
log.Printf("RES: Compress Snappy.ttRatio %v", float64(to.ByteSize())/float64(from.ByteSize()))
log.Printf("RES: Compress Snappy.ttBuffered Items: %dtItem: %vttook: %vtrate: %dtsize: %Etsize/item: %E", to.Len(), *counter, *dur, int( float64(*counter)/(*dur).Seconds()), float64(to.ByteSize()), float64(to.ByteSize())/float64(*counter))
演算子はチェーンの主要コンポーネントです。タプルを処理して結果を生成します。ソースは出力を持たない演算子です。シンクは入力を持たない演算子です。オペレーターは stream.Operator を実装します。入力を受け取る場合は、stream.In を実装します。出力を生成する場合は、stream.Out を実装します。
マッパーは演算子を実装する簡単な方法を提供します。 mapper.NewOp() は、入力を処理して Outputer オブジェクトに出力する func(input stream.Object, out Outputer) 形式の関数を受け取ります。マッパーは自動的に並列化されます。ジェネレーターは、クロージャーを通じてマッパーにスレッドローカルのストレージを提供する方法を提供します。最後のタプルの処理が完了した後、マッパーに特別な機能を与えることもできます。
チェーンのデータを他のチェーンに分割することもできます。 stream.Fanout は入力を受け取り、それを他の N チェーンにコピーします。ディストリビューターは入力を受け取り、マッピング関数に従って N チェーンのうちの 1 つに入力します。
チェーンはオーダーすることも、オーダーしないこともできます。順序付きチェーンでは、入力から出力までのタプルの順序が維持されます (ただし、演算子は引き続き並列処理を使用します)。
コンパイル: ビルドに行く
テスト: テストに行く