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.
Los datos no estructurados no siguen un formato predefinido como filas y columnas. Ejemplos comunes incluyen:
# 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()
# Dividir en palabras
tokens = rdd.flatMap(lambda linea: linea.split(" "))
# Contar palabras
distinct_words = tokens.distinct()
print(f"Palabras únicas: {distinct_words.count()}")
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()