Entradas

Mostrando entradas de abril, 2025

Castear Tipo de Dato en Spark

 // Ya tienes Dataset<?> datos; StructType schema; Class<Tabla> dtoClass; // 1. Casteamos las columnas Dataset<Row> datosCasteados = DatasetUtils.castearSegunSchema((Dataset<Row>) datos, schema); // 2. Mapear al DTO Dataset<Tabla> datosTyped = datosCasteados.as(Encoders.bean(dtoClass)); import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.functions; import org.apache.spark.sql.types.StructField; import org.apache.spark.sql.types.StructType; public class DatasetUtils {     /**      * Castea las columnas de un Dataset<Row> según un esquema dado (StructType).      *      * @param dataset Dataset original, donde las columnas pueden ser StringType.      * @param schema  StructType con los tipos esperados.      * @return Dataset<Row> con las columnas casteadas a los tipos correctos.      */   ...

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, t...