Dominar la lectura de distintos formatos de archivo es uno de los primeros pasos para trabajar con Apache Spark en un entorno real. Saber cómo ingestar archivos CSV, archivos con extensión .data y archivos JSON semiestructurados permite construir pipelines de datos sólidos desde el inicio. A continuación se explican las técnicas y funciones clave que se aplican directamente en Databricks.
¿Cómo preparar el entorno en Databricks para la lectura de datos?
Antes de ejecutar cualquier lectura, es necesario tener el notebook importado y el cluster conectado. Dentro de la plataforma se accede a Workspace, se selecciona la carpeta del curso y se importa el notebook de lectura de datos arrastrándolo al panel de importación [0:10].
Los archivos origen residen en el Databricks File System (DBFS), específicamente en la ruta dbfs:/FileStore/curso_databricks/. Para verificar o copiar la ruta de cualquier archivo basta con ir a la sección de Catalog, ubicar el archivo y usar la opción copy path [1:10].
Un punto importante: en Databricks no es necesario crear una sesión de Spark ni un contexto de Spark de forma manual, ya que ambos vienen predeterminados en el entorno [2:13].
¿Qué funciones se utilizan para leer archivos CSV y .data?
Lectura de archivos CSV
Para leer un archivo CSV se emplea la función spark.read.csv(). Los parámetros esenciales son tres [1:22]:
- header: se establece en
true para respetar la primera fila como encabezado.
- inferSchema: activa la inferencia automática de tipos de dato en cada columna.
- ruta del archivo: indica la ubicación dentro de DBFS, por ejemplo
dbfs:/FileStore/curso_databricks/2015_summary.csv.
El resultado se almacena en un objeto —en el ejemplo, summary— y con el método .show(10) se visualizan los primeros diez registros en formato dataframe [2:30]. Para inspeccionar el esquema de metadatos se utiliza printSchema, que muestra el nombre de cada campo, su tipo de dato y si acepta valores nulos [2:55].
Lectura de archivos .data con delimitador personalizado
Los archivos .data son archivos de texto plano, por lo que internamente Spark también los trata como CSV. La diferencia radica en las opciones adicionales que se configuran [3:15]:
- delimiter: se especifica el carácter separador, en este caso el pipe (
|).
- encoding: se define la codificación del archivo, por ejemplo
ISO-8859-1.
- load: recibe la ruta completa del archivo
persona.data.
El resultado se guarda en el objeto persona_df. Al ejecutar .show(10) se visualizan campos como ID, nombre, teléfono y correo [4:25]. Aplicar printSchema revela que Spark ha inferido todas las columnas como tipo string, lo cual es común cuando no se fuerza un esquema explícito [4:48].
¿Cómo se lee un archivo JSON semiestructurado en Spark?
La lectura de archivos JSON cambia ligeramente la sintaxis. En lugar de spark.read.csv(), se utiliza spark.read.format("json") seguido del método .load() con la ruta del archivo transacciones.json [5:05].
Un parámetro clave es multiLine, que se establece en true. Esto es necesario porque los archivos JSON suelen contener listas anidadas dentro de otras listas; sin esta opción, Spark podría interpretar incorrectamente la estructura [5:20].
Visualización de datos anidados
Al hacer .show(10), las columnas que contienen estructuras anidadas aparecen truncadas. Para obtener una vista completa se agrega el parámetro false como segundo argumento: .show(10, false). De esta forma se despliega el contenido sin recortes [5:55].
El método printSchema sobre el objeto transacciones_df muestra que el archivo está compuesto por varias estructuras internas [6:25]:
- Empresa: incluye campos como ID y nombre.
- Persona: contiene datos del individuo.
- Transacción: agrupa la información financiera.
Para trabajar analíticamente con este tipo de esquema sería necesario modelar el archivo semiestructurado, es decir, aplanar sus estructuras anidadas y convertirlas en un formato tabular.
Además de CSV, .data y JSON, existen otros formatos muy utilizados en contextos de big data, como Parquet y Avro, que ofrecen ventajas en compresión y rendimiento de lectura.
Si ya tienes tu entorno Databricks configurado, replica cada uno de estos ejemplos con tus propios archivos y comparte en los comentarios qué formato te resultó más sencillo de manejar.