Una idea errónea persiste entre los usuarios históricos de SAS© que se enfrentan al Big Data: "Para analizar mis datos de Hadoop con SAS©, primero debo extraerlos de HDFS, convertirlos en tablas SAS© locales y luego ejecutar mi PROC SQL."
Este enfoque (ETL clásico) no solo es ineficaz, sino que anula la principal ventaja de Hadoop: el procesamiento paralelo distribuido. Si mueve petabytes de datos a un único servidor SAS© (Compute Server), crea un cuello de botella masivo.
La respuesta moderna (desde SAS© 9.4) se basa en el principio del "Procesamiento en Base de Datos": mover el código a los datos, y no al revés. Aquí están las tres tecnologías clave para integrar SAS© y Hadoop sin perder la paralelización.
1. PROC FEDSQL: La Nueva Generación de SQL
Si está acostumbrado a PROC SQL, sabe que tiene limitaciones en un entorno distribuido. A menudo tiende a traer los datos para realizar uniones u ordenamientos localmente (en el servidor SAS©).
La solución: PROC FEDSQL
Introducida con SAS© 9.4, FedSQL es una implementación propietaria del estándar ANSI SQL:1999, diseñada específicamente para el procesamiento "Escalable".
Funcionamiento: FedSQL actúa como un traductor inteligente. Cuando apunta a Hadoop (a través de Hive o Impala), intenta traducir su consulta a un dialecto nativo (HiveQL o Impala SQL) y ejecutarla directamente en el clúster.
Ventaja: Las uniones, filtros y agregaciones son ejecutadas por los nodos de Hadoop en paralelo. Solo el resultado final (a menudo pequeño) se devuelve a SAS©.
Conectividad: Soporta Hive, HAWQ e Impala.
2. El Lenguaje DS2 y el "Code Accelerator"
El DATA Step clásico de SAS© es secuencial y monohilo (procesa una línea tras otra en un solo procesador). Por lo tanto, es incompatible con la naturaleza distribuida de Hadoop.
La solución: El lenguaje DS2
DS2 es el sucesor multihilo del Data Step. Incluye conceptos de programación orientada a objetos y tipado fuerte, pero sobre todo, está diseñado para la ejecución paralela.
SAS© In-Database Code Accelerator: Es el componente mágico. Permite tomar un programa DS2 escrito en su interfaz SAS© y enviarlo ("push") para que se ejecute dentro de los nodos de datos de Hadoop (en forma de tareas MapReduce o a través de Spark según las versiones).
Data Program & Thread Program: El programa de datos y los hilos de procesamiento se ejecutan en paralelo en cada nodo del clúster, explotando toda la potencia de la CPU disponible en su infraestructura de Big Data.
3. SAS© SPD Engine (SPDE) sobre HDFS
A veces, necesita la estructura física de una tabla SAS© (indexación, compresión, metadatos precisos) pero desea almacenar esos datos en el sistema de archivos distribuido (HDFS) para la fiabilidad y la velocidad de E/S.
La solución: Scalable Performance Data Engine (SPDE)
El motor SPDE permite almacenar tablas en formato SAS© directamente en HDFS.
Particiona los datos (archivos de datos .dpf, archivos de índice .hbx, metadatos .mdf).
Esto permite a SAS© leer y escribir en paralelo desde varios nodos, ofreciendo velocidades de E/S muy superiores a un almacenamiento en disco clásico, manteniendo los datos "accesibles" como si fueran locales.
No realice ETL masivo hacia SAS©. Utilice FedSQL y DS2 para empujar la lógica de procesamiento hacia el clúster. Así conservará la ventaja del paralelismo de Hadoop mientras codifica desde su entorno SAS© familiar.