hadoop - memes - crotales para cerdos
¿Cómo extraigo la primera tupla de una bolsa generada(cuyo tamaño puede variar) en CERDO? (3)
Use DataFu UDF: FirstTupleFromBag ( http://datafu.incubator.apache.org/docs/datafu/1.2.0/datafu/pig/bags/FirstTupleFromBag.html )
Estoy generando una "bolsa" de información cuyo tamaño (número de tuplas dentro de la bolsa) puede variar. A partir de esto, quiero extraer el primer elemento sobre la marcha. ¿Cómo hago esto?
Según los documentos , una bolsa es una colección de tuplas y
La eliminación de referencias de bolsa se puede hacer por nombre (bag.field_name) o position (bolsa. $ 0). Si se desreferencia un conjunto de campos (bolsa. (Nombre1, nombre2) o bolsa. ($ 0, $ 1)), la expresión representa una bolsa compuesta por los campos especificados.
Pero ten cuidado, b.$0
no te da la primera tupla en la bolsa, ¡porque las bolsas no están ordenadas! Obtendrás los primeros elementos de las tuplas constituyentes.
Tendrá que convertir la bolsa a una estructura ordenada, o mejor, usar un UDF. También debe dejar de aceptar esta respuesta (para poder eliminarla) y aceptar a Guarev, que tiene un enlace a un UDF.
Si el orden de la tupla en la bolsa es importante para obtener el "primero" (¡por supuesto que lo es!), Entonces podría hacer algo como lo siguiente que se explica con más detalle en https://community.hortonworks.com/ questions / 22863 / can-we-filter-the-data-which-we-have-done-in-37-s.html # answer-22995 .
max_runs = FOREACH grp_data {
inner_sorted = ORDER runs BY runs DESC;
first_row = LIMIT inner_sorted 1;
GENERATE first_row AS most_hits;
}