Leer la segunda fila de un csv


UltraSimpleCSVProcessor 


imimport org.apache.spark.sql.*;


public class CSVHeaderInRow2Processor {

    public static void main(String[] args) {

        SparkSession spark = SparkSession.builder()

                .appName("CSV Headers in Row 2")

                .master("local[*]")

                .getOrCreate();

                

        // 1. Leer el archivo CSV con la primera fila como encabezado

        Dataset<Row> dataWithWrongHeader = spark.read()

                .option("header", "true")  // La primera fila tiene "data" como cabecera

                .csv("ruta/al/archivo.csv");

        

        // En este punto, tenemos un DataFrame con una columna llamada "data"

        

        // 2. Guardar la primera fila de datos (que realmente contiene los nombres de columnas)

        String headerLine = dataWithWrongHeader.first().getString(0);

        

        // 3. Dividir esta línea por comas para obtener los nombres de columnas reales

        String[] columnNames = headerLine.split(",");

        

        // 4. Filtrar el DataFrame para excluir la primera fila (la que contiene los nombres reales)

        Dataset<Row> dataOnly = dataWithWrongHeader.filter(

                dataWithWrongHeader.col("data").notEqual(headerLine)

        );

        

        // 5. Dividir la columna "data" en múltiples columnas

        Dataset<Row> processedData = dataOnly;

        for (int i = 0; i < columnNames.length; i++) {

            processedData = processedData.withColumn(

                    columnNames[i],

                    functions.split(dataOnly.col("data"), ",").getItem(i)

            );

        }

        

        // 6. Eliminar la columna original "data"

        processedData = processedData.drop("data");

        

        // Mostrar el resultado final

        processedData.show();

        

        spark.stop();

    }

}

Comentarios

Entradas populares de este blog

Pequeño server local

CobolParser Para Spark

iteratorSeguro