Me encanta dividir transformaciones en piezas pequeñas y reutilizables para controlar rendimiento paso a paso. Uso transformaciones mapeadas y metadata injection para evitar replicar lógica y así poder perfilar cada módulo con pruebas de carga; eso facilita encontrar el paso que arrastra la cadena. También comparto caches entre pasos y habilito lookups en memoria cuando la dimensión cabe en RAM, lo que reduce latencia de forma apreciable.
Para el despliegue, programo ejecuciones fuera de horarios pico y escalono jobs paralelos según el uso del clúster. Mantener la simplicidad en cada transformación y tener métricas claras me permite iterar rápido y mantener estabilidad a largo plazo.
Me fijo primero en las consultas que alimentan las transformaciones y en cómo se mueven los datos. Normalmente rehago las consultas para evitar SELECT y para filtrar lo más posible en origen: eso reduce I/O y tráfico de red. Si la lógica puede ejecutarse en la base de datos, la dejo allí; los motores SQL están optimizados para joins y agregaciones y mover esa carga fuera de «Pentaho Data Integration» mejora el rendimiento general.
También trabajo con cachés de lookup y con 'Cached rowset' para evitar idas y vueltas a la BD en cada fila. Cuando es necesario escribir mucho, uso el paso de 'Bulk loader' o configuro el 'Table output' en modo batch y ajusto el commit size; así disminuyo la sobrecarga por transacción. Al final, pocos cambios en SQL y commits por lotes suelen dar grandes ganancias.
Nunca subestimé el impacto de ajustar la JVM y la arquitectura de ejecución cuando trabajo con «Pentaho Data Integration». En mi experiencia, lo primero que hago es sacar las transformaciones del entorno gráfico: ejecuto con Pan/Kitchen en servidores dedicados y evito Spoon en producción. Ajusto -Xms y -Xmx según el tamaño de los jobs, activo un colector de basura moderno (por ejemplo G1) y recojo métricas de GC; eso ya elimina picos impredecibles.
Después me enfoco en el diseño de la transformación: minimizar pasos bloqueantes (ordenar, agrupar), empujar operaciones al motor SQL (hacer joins y filtros en la BD), y usar cargas por lotes con un tamaño de commit razonable. Cambiar pasos de 'Modified Java Script Value' por 'User Defined Java Class' o transformaciones nativas suele acelerar mucho. Paralelizo colocando varias copias de un paso y ajustando el 'rowset size' para equilibrar memoria y concurrencia. Finalmente monitorizo con logs, métricas de pasos y VisualVM; con esos datos hago iteraciones rápidas hasta que el pipeline sea estable y escalable.
Prefiero empezar por eliminar pasos lentos y por evitar conversiones innecesarias. El paso 'Sort rows' y cualquier operación que requiera ordenar grandes volúmenes deben repensarse; muchas veces basta pre-sortear en la base o usar 'Merge Join' con entradas ya ordenadas para evitar buffering masivo. Además, reduzco el uso de JavaScript pesado: ese paso es práctico en pruebas, pero en producción es muy lento; lo sustituyo por 'Calculator' o por código Java compilado cuando hace falta rendimiento.
Otro detalle práctico: apago el logging detallado en producción y dejo solo WARN/ERROR, porque el logging excesivo puede matar el rendimiento cuando procesas millones de filas. Es sorprendente cuánto ayuda esta limpieza.
Me gustan los detalles del entorno: CPU, discos y red importan tanto como el diseño del flujo. En un caso reciente noté cuellos de botella por I/O, así que pasé tablas intermedias a discos SSD y reduje latencias; el throughput subió instantáneamente. Para cargas masivas uso formatos columnar y comprimidos (parquet/avro) en lugar de CSV cuando la arquitectura lo permite, porque reduce lectura/escritura y acelera procesos downstream.
En entornos con muchos trabajos concurrentes, desplegué nodos Carte en un clúster y utilicé particionamiento de entradas para paralelizar. También automatizo despliegues con contenedores y ajusto límites de memoria por contenedor. No me olvido de la observabilidad: recolección de métricas JMX, logs de GC y traces me dieron pistas que ninguna optimización de transformación sola habría mostrado. Al final, la suma de infra + diseño trae resultados consistentes.
2026-07-06 12:36:00
3
Lihat Semua Jawaban
Pindai kode untuk mengunduh Aplikasi
Buku Terkait
Los Trillizos Genios del CEO
Black Knight
9.3
66.8K
Drogada y engañada, dio a luz en medio de una tragedia: su hijo fue declarado falsamente muerto al nacer. Consumida por el dolor, desapareció… pero años después, regresó con su hija y un hijo adoptivo, impulsada por un deseo implacable de vengarse de quienes arruinaron su vida y la de su difunta madre.
Pero el destino tenía preparado un giro impactante: su hijo está vivo…
y su padre es un poderoso CEO.
Mi esposo estaba trabajando durante las fiestas, otra vez. Lo habían enviado fuera de la ciudad para supervisar una de las operaciones portuarias de la Familia y una serie de casas de juego. Por lo tanto, decidí comprar un boleto y sorprenderlo.
Solo quedaban asientos en clase ejecutiva.
Mirando el precio de cinco cifras, apreté los dientes y me gasté los ahorros de todo un año.
Todo para que luego ni siquiera pudiera averiguar cómo bajar la maldita bandeja.
La socialité sentada a mi lado soltó una risa fría.
—¿Nunca has volado en clase ejecutiva?
Forcé una sonrisa incómoda.
—Disculpa. Tú debes de ser… importante. Tienes esa aura.
—¿Oh, yo? No. El hombre que me mantiene es el importante. Alquilaría un jet privado si yo se lo pidiera. La clase ejecutiva es prácticamente rebajarse.
Parpadeé.
—¿Un… benefactor? Eso es raro.
—Para nada. Soy su secretaria. Cometo muchos errores. Le cuesta una fortuna. Me grita hasta que lloro. Y luego, bueno… llorar lleva a otras cosas. —Ella guiñó un ojo—. Ya sabes cómo es.
—Qué curioso —dije, con la voz tensa—. Mi esposo tiene una asistente que le ayuda a manejar las cuentas de los muelles. También se equivoca mucho.
—¿Estás casada?
Me recorrió de arriba abajo con la mirada.
—Mi hombre tiene una esposa de tu edad. Dice que está harto de ella. Que tocarla es aburrido. Dice que es mucho más emocionante el simple hecho de apartarme el cabello de la cara.
Se inclinó más cerca.
—Le dije que quería verlo para Año Nuevo. Así que le dijo a la esposa que tenía que trabajar.
En ese momento, el diamante en su dedo atrapó la luz. Era idéntico al anillo de boda que yo había perdido.
El cuerpo se me heló.
No. Matteo solo era un ejecutor de bajo nivel. Un simple soldado en el que la Familia confiaba ocasionalmente para hacer operaciones menores: envíos en el muelle, apuestas clandestinas, nada más.
¿Cuándo se convirtió en un Don?
—Pao, ayúdame aquí abajo, chupa con un poco más de fuerza...
Con tal de ayudarme a que todo volviera a funcionar, la guapa chica que tenía enfrente se puso de rodillas y empezó a succionarme con muchísimas ganas.
Ella es mi entrenadora de ciclismo. Por un descuido, terminó dándome un golpe accidental en la entrepierna.
En ese momento, estaba toda angustiada intentando que mi hombría despertara de nuevo.
Pero en realidad yo ya había recuperado la sensibilidad desde hace rato; solo me estaba dejando llevar por el placer de su boquita.
Y lo que menos me imaginé fue que, por lo visto, ella también se estaba empezando a calentar.
Durante mi boda, me traicionaron. Mi prometido me convirtió en el hazmerreír y me dejó para que los invitados se burlaran brutalmente de mí.Me quedé estupefacta, anonadada y con el corazón roto cuando el Alfa de la manada enemiga, el hombre más poderoso y deseado de la ciudad se acercó a mí.—¿También has venido a humillarme? —le pregunté.—Amber Collins —respondió suavemente, y su pulgar acarició suavemente mi mejilla—. ¿Me aceptas como esposo?Sin embargo, no fue hasta mucho tiempo después, que descubrí que nada de eso era una coincidencia.**Me tumbó de lado: —He querido marcarte desde que te conozco... —murmuró mientras se apretaba más contra mi cuerpo.—Espera... Espera... —jadeé.Pero era imposible. No había forma de detenerlo. Es una fuerza de la naturaleza. Una naturaleza que me entregaba a él, en cuerpo y alma."Primero el matrimonio, luego el emparejamiento", es una obra de Reina Bellevue, autora de eGlobal Creative Publishing.
En mi vida pasada, una familia común me adoptó. A mi hermana menor, Regina Capasso, la acogió un Don de la mafia, y se convirtió en la Principessa de la familia mafiosa más poderosa de Etalia.
Inesperadamente, el Don expulsó a Regina al tercer año de haberla adoptado. La familia la obligó a vagar por la calle como indigente hasta el día en que murió de forma terrible.
Yo, en cambio, entré a una universidad prestigiosa gracias a mis buenas calificaciones. Después, continué mis estudios con mi hermano adoptivo mayor, Dario Bivona. Con mucho esfuerzo, terminé por convertirme en la nueva estrella de la industria de la IA, solicitada por todos.
Con la bendición de mis padres adoptivos, Dario y yo nos casamos y tuvimos hijos. Mi vida era feliz y pacífica.
Cuando recibimos una segunda oportunidad de vivir la misma vida, Regina tomó una decisión distinta.
Se lanzó a los brazos de Dario y comenzó a tratarlo con mucha dulzura. Luego, tomó de la mano a mis antiguos padres adoptivos mientras me miraba con regodeo.
—Livia, tú quédate con el puesto de Principessa de la mafia. Yo no estoy hecha para esa vida.
Miré a Dario expectante, con la esperanza de que dijera algo en mi defensa. Pero él puso a Regina detrás de sí y me fulminó con la mirada.
—Aléjate de mi hermana.
Al final, caminé despacio hacia el Rolls-Royce bajo la mirada triunfal de Regina.
Con ocho meses de embarazo, la secretaria de mi esposo hizo que congelaran todas mis tarjetas bancarias.
Por teléfono, soltó una risa fría y dijo:
—A partir de ahora, cada centavo que gastes necesita mi aprobación. Jack trabaja demasiado duro como para desperdiciar su dinero en una mujer inútil que solo sabe ir de compras.
Ese mismo día, me llevaron de urgencia al hospital con contracciones.
Pero, cuando intenté pagar, todas las tarjetas que intenté usar fueron rechazadas.
Y, como si eso no fuera suficiente, también había sacado a mis padres de su suite privada para adultos mayores y los había trasladado a la habitación más barata disponible.
¿Su razón?
Dos viejos comunes no tenían derecho a desperdiciar el dinero de Jack.
Me reí.
Ella no tenía idea de que esos «viejos comunes» eran el Don y la Donna de la familia Bellandi, la pareja que había controlado el bajo mundo de Italia durante décadas.
No tenía idea de que la empresa de Jack, su reputación, su fortuna… todo lo que poseía había venido de la familia Bellandi.
Mis padres ya tenían planeado retirarse por completo después de que naciera mi hijo, e iban a entregarme toda la familia.
A mí…
Y a Jack.
¡Qué lástima!
Jack había permitido que ella humillara al único poder real junto al que alguna vez tendría la oportunidad de estar.
Tres días después, Jack organizó una fiesta de bienvenida para su misterioso inversionista.
Frente a todos, su secretaria marcó el número del inversionista.
Al segundo siguiente, sonó mi teléfono.
Hace tiempo que me peleo con pipelines, y uno de los culpables recurrentes ha sido «Pentaho Data Integration». Me ha dejado errores clásicos: NullPointerException en pasos que esperan una columna que ya no existe, problemas con drivers JDBC que no cargan y transformaciones que se quedan sin memoria. Cuando veo un fallo, primero miro el log de Spoon o de Kitchen, porque casi siempre la traza explica qué clase falta o qué paso lanzó la excepción.
Otro error frecuente es la incompatibilidad de versiones: usar un plugin compilado para otra versión de Java o de la propia herramienta provoca errores al arrancar o pasos que no aparecen. La solución suele ser reinstalar el plugin en la carpeta correcta (plugins/), verificar la versión de Java y actualizar «Pentaho Data Integration» a un parche estable. También he solucionado fallos añadiendo los jars JDBC al lib/ y ajustando KETTLEHOME para que la herramienta los encuentre.
Para cerrar, recomiendo reproducir la transformación en Spoon con logging en DEBUG, aislar el paso problemático y probar con datos reducidos. Es tedioso, pero cada error resuelto me deja más claro qué revisar la próxima vez, y al final sienta muy bien ver el job correr sin caerse.