Entradas

Mostrando entradas de septiembre, 2025

Pequeño server local

<project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                              http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>com.example</groupId>     <artifactId>simple-server</artifactId>     <version>1.0-SNAPSHOT</version>     <properties>         <java.version>11</java.version>     </properties>     <dependencies>         <!-- NanoHTTPD -->         <dependency>             <groupId>org.nanohttpd</groupId>     ...

iteratorSeguro

El problema con toLocalIterator() es que trae todos los datos al driver , y Sonar lo marca como riesgo de memoria si el dataset es grande. La solución es procesar los datos en particiones usando mapPartitions , que mantiene los datos en los nodos del cluster y solo itera localmente por partición.  n método auxiliar que reemplace toLocalIterator() y devuelva un Iterator de manera segura por partición: public static <T> Iterator<T> iteratorSeguro(Dataset<T> dataset) {     return dataset.mapPartitions((Iterator<T> partition) -> {         List<T> buffer = new ArrayList<>();         partition.forEachRemaining(buffer::add);         return buffer.iterator();     }, Encoders.javaSerialization(Object.class)).toLocalIterator(); } public static <T> Iterator<T> iteratorSeguro(Dataset<T> dataset) {     return dataset.mapPartitions((Iterator<T...