Los formatos de columna, como Apache Parquet, ofrecen grandes ahorros de compresión y son mucho más fáciles de escanear, procesar y analizar que otros formatos como CSV. En este artículo, le mostramos cómo convertir sus datos CSV a Parquet utilizando AWS Glue.
¿Qué es un formato en columnas?
Los archivos CSV, archivos de registro y cualquier otro archivo delimitado por caracteres almacenan datos en columnas de manera efectiva. Cada fila de datos tiene un cierto número de columnas, todas separadas por el delimitador, como comas o espacios. Pero bajo el capó, estos formatos siguen siendo solo líneas de cadenas. No existe una forma fácil de escanear una sola columna de un archivo CSV.
Esto puede ser un problema con servicios como AWS Athena, que pueden ejecutar consultas SQL en datos almacenados en CSV y otros archivos delimitados. Incluso si solo está consultando una sola columna, Athena tiene que escanear todo el contenido del archivo. El único cargo de Athena es el GB de datos procesados, por lo que aumentar la factura procesando datos innecesarios no es la mejor idea.
La solución es un verdadero formato de columnas. Los formatos de columnas almacenan datos en columnas, como una base de datos relacional tradicional. Las columnas se almacenan juntas y los datos son mucho más homogéneos, lo que los hace más fáciles de comprimir. No son exactamente legibles por humanos, pero son entendidos por la aplicación que los procesa sin problemas. De hecho, debido a que hay menos datos para escanear, son mucho más fáciles de procesar.
Debido a que Athena solo tiene que escanear una columna para hacer una selección por columna, reduce drásticamente los costos, especialmente para conjuntos de datos más grandes. Si tiene 10 columnas en cada archivo y solo escanea una, eso significa un ahorro de costos del 90 % solo por cambiar a Parquet.
Convertir automáticamente usando AWS Glue
AWS Glue es una herramienta de Amazon que convierte conjuntos de datos entre formatos. Se utiliza principalmente como parte de una canalización para procesar datos almacenados en formatos delimitados y otros, y los inyecta en bases de datos para su uso en Athena. Si bien puede configurarse para que sea automático, también puede ejecutarlo manualmente y, con algunos ajustes, puede usarse para convertir archivos CSV al formato Parquet.
Diríjase a la consola de AWS Glue y seleccione "Comenzar". Desde la barra lateral, haga clic en "Agregar rastreador" y cree un nuevo rastreador. El rastreador está configurado para buscar datos de S3 Buckets e importar los datos a una base de datos para usarlos en la conversión.

Dé un nombre a su rastreador y elija importar datos desde un almacén de datos. Seleccione S3 (aunque DynamoDB es otra opción) e ingrese la ruta a una carpeta que contenga sus archivos. Si solo tiene un archivo que desea convertir, colóquelo en su propia carpeta.

A continuación, se le pide que cree un rol de IAM para que funcione su rastreador. Cree el rol, luego selecciónelo de la lista. Es posible que deba presionar el botón Actualizar junto a él para que aparezca.

Elija una base de datos para que el rastreador genere resultados; si ha usado Athena antes, puede usar su base de datos personalizada, pero si no, la predeterminada debería funcionar bien.

Si desea automatizar el proceso, puede programar su rastreador para que se ejecute regularmente. Si no es así, elige el modo manual y ejecútalo tú mismo desde la consola.
Una vez que se haya creado, continúe y ejecute el rastreador para importar los datos a la base de datos que elija. Si todo funcionó, debería ver su archivo importado con el esquema adecuado. Los tipos de datos para cada columna se asignan automáticamente en función de la fuente de entrada.

Una vez que sus datos están en el sistema de AWS, puede convertirlos. Desde Glue Console, cambie a la pestaña "Trabajos" y cree un nuevo trabajo. Asígnele un nombre, agregue su rol de IAM y seleccione "Un script propuesto generado por AWS Glue" como lo que ejecuta el trabajo.

Seleccione su tabla en la siguiente pantalla, luego elija "Cambiar esquema" para especificar que este trabajo ejecuta una conversión.

A continuación, debe seleccionar "Crear tablas en su destino de datos", especificar Parquet como formato e ingresar una nueva ruta de destino. Asegúrese de que esta sea una ubicación vacía sin ningún otro archivo.

A continuación, puede editar el esquema de su archivo. De manera predeterminada, esto es una asignación uno a uno de columnas CSV a columnas Parquet, que probablemente sea lo que desea, pero puede modificarlo si lo necesita.

Cree el trabajo y accederá a una página que le permite editar el script de Python que ejecuta. El script predeterminado debería funcionar bien, así que presione "Guardar" y regrese a la pestaña de trabajos.
En nuestras pruebas, la secuencia de comandos siempre fallaba a menos que el rol de IAM tuviera permiso específico para escribir en la ubicación a la que especificamos la salida. Es posible que deba editar manualmente los permisos desde la Consola de administración de IAM si se encuentra con el mismo problema.
De lo contrario, haga clic en "Ejecutar" y su secuencia de comandos debería iniciarse. El proceso puede tardar uno o dos minutos, pero debería ver el estado en el panel de información. Cuando termine, verá un nuevo archivo creado en S3.
Este trabajo se puede configurar para que se ejecute a partir de activadores establecidos por el rastreador que importa los datos, por lo que todo el proceso se puede automatizar de principio a fin. Si está importando registros del servidor a S3 de esta manera, este puede ser un método fácil para convertirlos a un formato más útil.