Skip to content
DigitalNeuron
Herramientas y productos

Databricks añade la reparticipación de estado a demanda para Spark Structured Streaming

Databricks anunció una función en vista previa pública que permite a las consultas de Structured Streaming cambiar el número de particiones sin necesidad de reconstruir los checkpoints.

Por DigitalNeuron Desk3 min de lectura

Respuesta rápida

¿Qué anunció Databricks sobre la gestión de estado en Apache Spark Structured Streaming?

Databricks anunció la reparticionamiento de estado bajo demanda, una función en Vista Previa Pública disponible en Databricks Runtime 18 y versiones posteriores, que permite a las consultas con estado de Structured Streaming modificar su número de particiones reiniciándose con una nueva configuración, sin perder ni reconstruir el estado del checkpoint.

Claves

  • Databricks anunció la reparticionamiento de estado bajo demanda para Apache Spark Structured Streaming, ahora disponible en versión preliminar pública en Databricks Runtime 18 y versiones posteriores.
  • La función permite a los usuarios cambiar el número de particiones de una consulta de streaming con estado mediante el nuevo parámetro spark.sql.streaming.stateStore.partitions, que tiene prioridad sobre spark.sql.shuffle.partitions en las consultas con estado.
  • Anteriormente, el número de particiones quedaba fijado en el momento de crear el checkpoint, y cambiar spark.sql.shuffle.partitions no tenía ningún efecto sin descartar el checkpoint y perder el estado acumulado.
  • Databricks señala que los requisitos son Databricks Runtime 18 o superior y el proveedor de almacén de estado RocksDB, que es el predeterminado en DBR 17.3 y versiones posteriores.
  • Databricks indica que Coveo, uno de los primeros usuarios de la función, redujo en un 40% los costos asociados de la API de Amazon S3 tras utilizar esta capacidad, según una cita de Alexis Chicoine, de Coveo, incluida en el anuncio.

Databricks anunció la reparticionamiento de estado a demanda ("on-demand state repartitioning") para Apache Spark Structured Streaming, una capacidad en Vista Previa Pública que permite a los ingenieros redimensionar el número de particiones de una consulta de streaming con estado sin reconstruir el checkpoint ni perder el estado acumulado. La función está disponible en Databricks Runtime 18 y versiones posteriores.

Qué cambió

Según Databricks, las consultas de streaming con estado han tenido históricamente su número de particiones fijado en el momento en que se creaba el checkpoint. Cambiar el parámetro estándar spark.sql.shuffle.partitions y reiniciar la consulta no tenía ningún efecto, porque la distribución de particiones quedaba integrada en el checkpoint. La única opción anterior, según Databricks, era descartar el checkpoint y comenzar uno nuevo, lo que implicaba perder todo el estado acumulado por la consulta, como datos de detección de fraude en millones de cuentas o ventanas de sesión de varios días.

Databricks afirma que la reparticionamiento de estado a demanda elimina esa restricción. Se aplica a cualquier consulta de streaming con estado, incluidas agregaciones, uniones stream-stream, deduplicación, sesionización y cargas de trabajo con transformWithState.

Cómo funciona

Databricks explica que los usuarios establecen una configuración específica, spark.sql.streaming.stateStore.partitions, y reinician la consulta. Este parámetro tiene prioridad sobre spark.sql.shuffle.partitions en las consultas con estado. Al reiniciar, la consulta primero completa cualquier micro-lote pendiente y luego realiza una operación única de reparticionamiento que redistribuye físicamente los datos de estado según el nuevo número de particiones, reasignando las claves mediante hash a sus ubicaciones correctas. Una vez completado ese proceso, la consulta reanuda su procesamiento con el nuevo número de particiones.

Databricks señala que los requisitos para usar esta función son Databricks Runtime 18 o superior y el proveedor de almacén de estado RocksDB, que es el predeterminado para las nuevas consultas creadas en DBR 17.3 y versiones posteriores.

Monitoreo

Databricks indica que la duración de la operación de reparticionamiento aparece en los eventos estándar StreamingQueryProgress, específicamente en las métricas durationMs, bajo un campo llamado controlBatch.REPARTITION. La compañía señala que el tiempo de reparticionamiento es proporcional a la cantidad de estado involucrado, pero espera que en la mayoría de las cargas de trabajo tome solo unos segundos.

Casos de uso mencionados

Databricks describe tres escenarios para esta función: ajustar el tamaño de una consulta después de su lanzamiento, cuando el número inicial de particiones definido para un piloto pequeño ya no se ajusta al crecimiento, como un flujo de puntuación de fraude que se expande de una región a muchas; adaptarse a cargas de trabajo cambiantes, como un pipeline de subastas publicitarias que podría aumentar el número de particiones durante el tráfico diurno y reducirlo por la noche; y la recarga de datos históricos, donde se podría usar temporalmente un mayor número de particiones para acelerar el reprocesamiento de datos pasados antes de reducirlo nuevamente para el tráfico en régimen estable.

Ejemplo de cliente

Databricks citó a Alexis Chicoine, Desarrollador de Software Senior en Coveo, uno de los primeros usuarios de la función, quien afirmó que Coveo ejecuta pipelines de streaming con estado a gran escala con volúmenes de datos fluctuantes y ha reducido en un 40% los costos asociados de la API de Amazon S3 gracias a esta capacidad. Chicoine señaló que anteriormente la compañía tenía que elegir entre el sobreaprovisionamiento o la reconstrucción a partir de nuevos checkpoints, lo que llevaba los costos de la API de almacenamiento a niveles cercanos a los del cómputo, y que ahora pueden escalar sin interrumpir el estado existente ni provocar migraciones de checkpoint.

Fuente: blog de Databricks, "Announcing On-Demand State Repartitioning for Apache Spark™ Structured Streaming on Databricks", publicado el 14 de septiembre de 2026.

Preguntas frecuentes

{"duration_api_ms":2992,"stop_reason":"end_turn","session_id":"8dbe8e7e-c120-4334-87d2-de454848bca4","total_cost_usd":0.0031777999999999997,"usage":{"input_tokens":2,"cache_creation_input_tokens":0,"cache_read_input_tokens":9019,"output_tokens":22,"output_tokens_details":{"thinking_tokens":0},"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":22,"cache_read_input_tokens":9019,"cache_creation_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"type":"message"}],"speed":"standard"},"modelUsage":{"claude-haiku-4-5-20251001":{"inputTokens":1065,"outputTokens":17,"cacheReadInputTokens":0,"cacheCreationInputTokens":0,"webSearchRequests":0,"costUSD":0.00115,"contextWindow":200000,"maxOutputTokens":32000,"thinkingTokens":0,"canonicalModel":"claude-haiku-4-5","provider":"firstParty","costBasis":"list"},"claude-sonnet-5":{"inputTokens":2,"outputTokens":22,"cacheReadInputTokens":9019,"cacheCreationInputTokens":0,"webSearchRequests":0,"costUSD":0.0020277999999999997,"contextWindow":1000000,"maxOutputTokens":64000,"thinkingTokens":0,"canonicalModel":"claude-sonnet-5","provider":"firstParty","costBasis":"list"}},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","fast_mode_disabled_reason":"sdk_opt_in_required","subagent_stats":{"spawned":0,"requested":{"background":0,"foreground":0,"unset":0},"started_in_background":0,"max_depth":0,"spawned_by_subagents":0,"completed":0,"failed":0,"killed":{"parent":0,"user":0,"system":0},"refused":{"depth_limit":0,"concurrency_limit":0,"budget":0},"by_type":{}},"is_error":false,"num_turns":1,"subtype":"success","api_error_status":null,"result":"¿Qué es la repartición de estado bajo demanda?","ttft_ms":2923,"type":"result","duration_ms":3055,"uuid":"5a06a5d9-3dbc-42d4-b380-89f0ffee1942","ttft_stream_ms":2235,"time_to_request_ms":1352,"queued_turn_count":0} Client.listTools() called but server does not advertise tools capability - returning empty list
Es una función en vista previa pública (Public Preview) de Databricks que permite que una consulta con estado de Apache Spark Structured Streaming cambie su número de particiones de estado deteniendo y reiniciando la consulta, manteniendo intacto el estado del checkpoint existente.
¿Qué necesito para usarla?
Databricks indica que se necesita Databricks Runtime 18 o superior y el proveedor de almacén de estado RocksDB, que ya es el predeterminado para las nuevas consultas creadas en DBR 17.3 y versiones posteriores.
¿Cómo cambio el número de particiones?
Databricks indica que hay que detener la consulta, establecer la configuración spark.sql.streaming.stateStore.partitions con el nuevo valor y reiniciar la consulta usando el mismo checkpoint; la consulta redistribuye entonces el estado para ajustarse al nuevo número antes de reanudar el procesamiento.
¿Cómo puedo monitorear la operación de reparticionamiento?
Databricks indica que los eventos StreamingQueryProgress reportan la duración de la operación en las métricas durationMs, bajo el campo controlBatch.REPARTITION.

Fuentes

  1. Announcing On-Demand State Repartitioning for Apache Spark™ Structured Streaming on Databricks | Databricks BlogDatabricks
Etiquetasdatabricksapache-sparkstructured-streamingdata-engineeringcheckpointingpublic-preview

Lecturas relacionadas

{"duration_api_ms":2911,"stop_reason":"end_turn","session_id":"40a692f4-4211-480b-a48e-ae8b8d16ad58","total_cost_usd":0.006905400000000001,"usage":{"input_tokens":2,"cache_creation_input_tokens":912,"cache_read_input_tokens":8132,"output_tokens":48,"output_tokens_details":{"thinking_tokens":0},"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":912,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":48,"cache_read_input_tokens":8132,"cache_creation_input_tokens":912,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":912},"type":"message"}],"speed":"standard"},"modelUsage":{"claude-haiku-4-5-20251001":{"inputTokens":1077,"outputTokens":14,"cacheReadInputTokens":0,"cacheCreationInputTokens":0,"webSearchRequests":0,"costUSD":0.001147,"contextWindow":200000,"maxOutputTokens":32000,"thinkingTokens":0,"canonicalModel":"claude-haiku-4-5","provider":"firstParty","costBasis":"list"},"claude-sonnet-5":{"inputTokens":2,"outputTokens":48,"cacheReadInputTokens":8132,"cacheCreationInputTokens":912,"webSearchRequests":0,"costUSD":0.0057584,"contextWindow":1000000,"maxOutputTokens":64000,"thinkingTokens":0,"canonicalModel":"claude-sonnet-5","provider":"firstParty","costBasis":"list"}},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","fast_mode_disabled_reason":"sdk_opt_in_required","subagent_stats":{"spawned":0,"requested":{"background":0,"foreground":0,"unset":0},"started_in_background":0,"max_depth":0,"spawned_by_subagents":0,"completed":0,"failed":0,"killed":{"parent":0,"user":0,"system":0},"refused":{"depth_limit":0,"concurrency_limit":0,"budget":0},"by_type":{}},"is_error":false,"num_turns":1,"subtype":"success","api_error_status":null,"result":"Databricks afirma que su equipo de marketing interno usa los datos tres veces más gracias a Marge, un asistente basado en Genie","ttft_ms":2448,"type":"result","duration_ms":2518,"uuid":"0b9c18c9-93cd-4863-a5d4-afa66b7fd08a","ttft_stream_ms":1785,"time_to_request_ms":506,"queued_turn_count":0} Client.listTools() called but server does not advertise tools capability - returning empty list

Databricks says its internal marketing team uses data three times more often in decisions after adopting Marge, a Genie Agents-based assistant built on a governed Marketing Lakehouse. The company reports over 85% adoption among marketers, 800-plus monthly questions answered, and a 25% drop in flagged incorrect responses.

3 min de lectura

Databricks afirma que su asistente de IA interno triplicó el uso de datos entre los profesionales de marketing

Databricks afirma que su equipo de marketing desarrolló Marge, un asistente de análisis conversacional basado en Genie Agents, sobre un Marketing Lakehouse gobernado. La compañía informa que los profesionales de marketing ahora recurren a los datos tres veces más a menudo para tomar decisiones, la adopción supera el 85% de la organización de marketing y las respuestas incorrectas señaladas han disminuido un 25%.

3 min de lectura

Databricks afirma que su asistente de IA interno triplicó el uso de datos entre los profesionales de marketing

Databricks afirma haber desarrollado Marge, un asistente de análisis de IA impulsado por Genie Agents y basado en un Marketing Lakehouse gobernado, que permite a los profesionales de marketing hacer preguntas en lenguaje natural. La empresa informa que ahora los equipos de marketing usan los datos tres veces más a menudo en sus decisiones, con una adopción que supera el 85% de la organización de marketing.

3 min de lectura