Pustaka ini adalah kerangka kerja untuk analisis pemrosesan aliran. Ini dimaksudkan untuk digunakan sebagai perpustakaan untuk program go yang perlu melakukan pemrosesan aliran data dalam jumlah besar.
Ini terdiri dari grafik yang menghubungkan sumber ke 1 atau lebih operator, berakhir di sink. Operator meneruskan data dari satu ke yang lain dengan saluran go. Contoh grafik untuk menyandikan objek menjadi tajam adalah:
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))
Operator adalah komponen utama dari sebuah rantai. Mereka memproses tupel untuk menghasilkan hasil. Sumber adalah operator tanpa keluaran. Sink adalah operator tanpa input. Operator mengimplementasikan stream.Operator. Jika dibutuhkan input mengimplementasikan stream.In; jika menghasilkan output mengimplementasikan stream.Out.
Pemeta memberikan cara sederhana untuk mengimplementasikan operator. mapper.NewOp() mengambil fungsi dalam bentuk func(input stream.Object, out Outputer) yang memproses input dan mengeluarkannya ke objek Outputer. Pemeta secara otomatis diparalelkan. Generator memberikan cara untuk memberikan penyimpanan lokal thread kepada pembuat peta melalui penutupan. Anda juga dapat memberikan fungsionalitas khusus kepada pembuat peta setelah mereka selesai memproses tupel terakhir.
Anda juga dapat membagi data suatu rantai menjadi rantai lainnya. stream.Fanout mengambil masukan dan menyalinnya ke N rantai lainnya. Distributor mengambil masukan dan memasukkannya ke dalam 1 dari N rantai sesuai dengan fungsi pemetaan.
Rantai dapat dipesan atau tidak. Rantai terurut mempertahankan urutan tupel dari input hingga output (walaupun operator masih menggunakan paralelisme).
Kompilasi: mulai membangun
Pengujian: lakukan tes