Foro Formación Hadoop
Spark Python - Procesar fichero heterogeneo
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
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.
Hola.
Pero entonces has encontrado la manera de iterar linea por linea con Python ? Puedes mostrar un ejemplo, por favor.
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.
Redes sociales