Apache Spark ofrece herramientas robustas para trabajar con datos no estructurados como texto, imágenes y datos JSON anidados. Estas capacidades permiten a los desarrolladores extraer valor de datos complejos en entornos distribuidos.


¿Qué son los Datos No Estructurados?

Los datos no estructurados no siguen un formato predefinido como filas y columnas. Ejemplos comunes incluyen:


Procesamiento de Texto

Leer y procesar datos de texto

# Leer un archivo de texto
rdd = sc.textFile("/ruta/archivo.txt")

# Contar líneas
num_lineas = rdd.count()
print(f"Número de líneas: {num_lineas}")

# Filtrar líneas que contienen una palabra específica
filtradas = rdd.filter(lambda linea: "error" in linea.lower())
filtradas.collect()

Tokenización y análisis

# Dividir en palabras
tokens = rdd.flatMap(lambda linea: linea.split(" "))

# Contar palabras
distinct_words = tokens.distinct()
print(f"Palabras únicas: {distinct_words.count()}")


Procesamiento de Imágenes

Trabajar con datos binarios

Spark no tiene soporte directo para imágenes, pero permite leer datos binarios que se pueden procesar con librerías externas como PIL o OpenCV.

# Leer imágenes como binarios
imagenes = sc.binaryFiles("/ruta/imagenes/*")

# Procesar imágenes usando PIL
from PIL import Image
import io

def procesar_imagen(nombre_y_contenido):
    nombre, contenido = nombre_y_contenido
    with Image.open(io.BytesIO(content)) as img:
        return nombre, img.size

imagenes_tamanos = imagenes.map(procesar_imagen)
imagenes_tamanos.collect()


Procesamiento de JSON Anidado