Foro Formación Hadoop

Spark Python - Procesar fichero heterogeneo

 
Imagen de Alexandre Pereiras
Spark Python - Procesar fichero heterogeneo
de Alexandre Pereiras - lunes, 26 de marzo de 2018, 15:59
 

Hola,

Lanzo una pregunta en caso de que alguien pueda ayudar...

He estado revisando los ejercicios y lo que veo es que todos los ficheros que se consumen (logs) tienen un formato bastante definido: ip, pagina, etc. Todo esto lo entiendo y se cómo procesarlo, y por qué se procesa así.

Ahora me veo con la incógnita de procesar un fichero de texto que no sigue un formato idéntico en todas sus líneas. Por ejemplo, el fichero que tengo en mente tiene un formato del estilo:

clave_1: valor_1

   clave_2: valor_2

clave_3: valores_3

clave_4: valor_5

clave_5: valor_5 (donde el valor_5 son unas 20 líneas del RDD)

Lo que quiero obtener es un RDD de pares clave/valor de la siguiente forma:

(valor_1, valor_2, valores_3, valor_4, valor_5 (las 20 líneas del RDD)) donde valor_1 será la clave.

De esta forma, el fichero tendrá sentido para ser consumido.

En lo que estoy perdido es cómo obtener esto con RDDs y python. Soy capaz de hacer UNION y obtengo un RDD de pares ((clave1, valor1), (clave2, valor2)) pero no soy capaz de obtener un resultado final del estilo que propongo.

Pensé en procesar línea a línea del fichero, pero Python no me permite iterar por líneas del RDD (en base a mi conocimiento limitado).

Cualquier idea será bienvenida...

Gracias

 

Imagen de Alexandre Pereiras
Re: Spark Python - Procesar fichero heterogeneo
de Alexandre Pereiras - jueves, 5 de abril de 2018, 16:39
 

Hola,

Para el que le pueda interesar: al final he encontrado una manera de solucionar este problema, que es procesar el fichero línea a línea, mezclando un poco RDDs con programación en Python.

Imagen de MIGUEL OROPEZA
Re: Spark Python - Procesar fichero heterogeneo
de MIGUEL OROPEZA - lunes, 9 de abril de 2018, 09:39
 

Hola.

Pero entonces has encontrado la manera de iterar linea por linea con Python ?  Puedes mostrar un ejemplo, por favor.

Imagen de Alexandre Pereiras
Re: Spark Python - Procesar fichero heterogeneo
de Alexandre Pereiras - miércoles, 11 de abril de 2018, 11:54
 

Si.Lo que he hecho es, para cada fichero, leerlo con el metodo sc.textFile. De esta forma, cada linea es una entrada del RDD. A continuacion hago un collect del RDD y me devuelve todas las lineas del fichero en una lista (los ficheros no suelen ser grandes).

De esta forma, itero la lista y cojo los valores que mas me convienen.

Imagen de MIGUEL OROPEZA
Re: Spark Python - Procesar fichero heterogeneo
de MIGUEL OROPEZA - jueves, 12 de abril de 2018, 12:38
 

Gracias Alexandre.  Por lo menos parece mas simple que hacerlo con un shell script de unix.

 

Saludos