Cómo convertir archivos CSV y de registro a un formato de columnas

Los formatos en columnas, 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.

Índice de contenidos
  1. ¿Qué es un formato columnar?
  2. Convierta automáticamente con AWS Glue

¿Qué es un formato columnar?

Los archivos CSV, los archivos de registro y cualquier otro archivo delimitado por caracteres almacenan datos en columnas de forma eficaz. Cada fila de datos tiene varias columnas, todas separadas por el delimitador, como comas o espacios. Pero bajo el capó, estos formatos siguen siendo solo líneas de cuerdas. No existe una forma sencilla 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 columna, Athena tiene que escanearla completo contenido del archivo. El único cargo de Athena son 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 columnar. Los formatos de columnas almacenan datos en columnas, al igual que una base de datos relacional tradicional. Las columnas se almacenan juntas y los datos son mucho más fluidos, lo que facilita la compresión. No son exactamente legibles por humanos, pero son entendidos por la aplicación que los procesa correctamente. De hecho, dado que hay menos datos para escanear, son mucho más fáciles de procesar.

Dado 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, esto es un ahorro de costos del 90% con solo cambiar a Parquet.

Convierta automáticamente con 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 alimentarlos en bases de datos para su uso en Athena. Si bien se puede configurar para que sea automático, también puede ejecutarlo manualmente y, con algunos ajustes, se puede usar para convertir archivos CSV al formato Parquet.

Vaya a la consola de AWS Glue y seleccione "Comenzar". En la barra lateral, haga clic en "Agregar rastreador" y cree un nuevo rastreador. El rastreador está configurado para escanear datos del S3 Bucket e importar los datos a una base de datos para usarlos en la conversión.

Creando un rastreador.

Asigne 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 carpeta.

Elegir el almacén de datos desde el que importar datos al rastreador.

A continuación, se le pedirá que cree una función de IAM para que funcione su rastreador. Cree el rol y luego elíjalo de la lista. Es posible que deba presionar el botón de actualización al lado para que aparezca.

Elección de IAM y función para su rastreador.

Elija una base de datos para la salida del rastreador; Si ha usado Athena antes, puede usar su propia base de datos personalizada, pero si no, la predeterminada debería funcionar bien.

Configurando la base de datos de salida de su rastreador.

Si desea automatizar el proceso, puede darle a su rastreador una programación para que se ejecute de forma regular. Si no es así, elija el modo manual y ejecútelo usted mismo desde la consola.

Una vez creado, ejecute el rastreador para importar los datos a la base de datos de su elección. Si todo funcionó, debería ver su archivo importado con el esquema correcto. Los tipos de datos para cada columna se asignan automáticamente en función de la entrada de origen.

Archivos importados con el esquema correcto.

Una vez que sus datos estén en el sistema AWS, puede convertirlos. Desde Glue Console, vaya a la pestaña "Trabajos" y cree un nuevo trabajo. Asígnele un nombre, agregue su función de IAM y seleccione "Una secuencia de comandos propuesta generada por AWS Glue" como ejecución del trabajo.

Asigne un nombre a su nuevo trabajo, agregue el rol de IAM y seleccione "Un script propuesto generado por AWS Glue".

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

Escoger "Cambiar esquema" para especificar que el trabajo realiza una conversión.

A continuación, debe seleccionar "Crear tablas en 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 otros archivos.

Elija un objetivo de datos seleccionando "Cree tablas en su destino de datos", especificando Parquet como formato e ingresando una nueva ruta de destino.

Más tarde, puede cambiar el esquema de su archivo. El valor predeterminado es un mapeo uno a uno de las columnas CSV a las columnas Parquet, que es probablemente lo que desea, pero puede cambiarlo si es necesario.

Cambie el esquema de su archivo.

Cree el trabajo y se le dirigirá a una página que le permitirá editar el script de Python que ejecuta. La secuencia de comandos predeterminada debería funcionar bien, así que presione "Guardar" y vuelva a la pestaña de trabajos.

Durante nuestras pruebas, la secuencia de comandos siempre fallaba a menos que al rol de IAM se le otorgara un permiso específico para escribir en la ubicación a la que especificamos la salida a la que ir. Es posible que deba cambiar manualmente los permisos desde la Consola de administración de IAM si ocurre el mismo problema.

De lo contrario, haga clic en "Ejecutar" y la secuencia de comandos debería comenzar. El procesamiento 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 proceso se puede configurar para ejecutar disparadores establecidos por el rastreador que importa los datos, de modo que todo el proceso se pueda automatizar de principio a fin. Si está importando registros del servidor a S3 de esta manera, esta puede ser una manera fácil de convertirlos a un formato más utilizable.

Descubre más contenido

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir Change privacy settings