Esta biblioteca es un marco para el análisis de procesamiento de flujo. Está destinado a ser utilizado como una biblioteca para programas Go que necesitan realizar procesamiento continuo de grandes volúmenes de datos.
Se compone de un gráfico que conecta una fuente a 1 o más operadores y termina en un sumidero. Los operadores pasan datos de uno a otro con canales go. Un gráfico de ejemplo para codificar objetos para que sean ágiles es:
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))
Los operadores son los componentes principales de una cadena. Procesan tuplas para producir resultados. Las fuentes son operadores sin salida. Los sumideros son operadores sin intervención. Los operadores implementan stream.Operator. Si requiere entrada, implemente stream.In; si produce salida, implementa stream.Out.
Los mapeadores brindan una forma sencilla de implementar operadores. mapper.NewOp() toma una función del formulario func(input stream.Object, out Outputer) que procesa la entrada y la envía al objeto Outputer. Los mapeadores se paralelizan automáticamente. Los generadores brindan una forma de brindar a los mapeadores almacenamiento local de subprocesos a través de cierres. También puedes darle a los mapeadores una funcionalidad especial después de que hayan terminado de procesar la última tupla.
También puedes dividir los datos de una cadena en otras cadenas. stream.Fanout toma información y la copia en N otras cadenas. El distribuidor toma información y la coloca en 1 de N cadenas de acuerdo con una función de mapeo.
Las cadenas se pueden ordenar o desordenar. Las cadenas ordenadas preservan el orden de las tuplas desde la entrada hasta la salida (aunque los operadores todavía usan paralelismo).
Compilando: ir a construir
Prueba: ir a probar