Notas de la versión: SDK de Cloud Dataflow 2.x para Java

NOTA: La página Descargas de Apache Beam contiene notas de las versiones de los SDK de Apache Beam.

NOTA: Las versiones 2.x del SDK de Cloud Dataflow presentan un número significativo de cambios de la serie de versiones 1.x. Consulta los cambios en la guía de migración de 1.x a 2.x.

En enero de 2016, Google anunció la donación de los SDK de Cloud Dataflow a la Apache Software Foundation como parte del proyecto Apache Beam. Los SDK de Cloud Dataflow ahora se encuentran en Apache Beam.

El SDK de Cloud Dataflow para Java 2.0.0 es la primera versión 2.x estable de este SDK, basada en un subconjunto de la base de código de Apache Beam. A fin de obtener más información sobre la versión 1.x del SDK de Cloud Dataflow para Java, consulta las notas de la versión.

La página de estado de compatibilidad de las versiones del SDK contiene información sobre el estado de compatibilidad de cada versión del SDK de Cloud Dataflow.

A fin de instalar y usar el SDK de Cloud Dataflow, consulta la guía de instalación del SDK de Cloud Dataflow.

Advertencia para usuarios que actualizan desde el SDK de Cloud Dataflow para Java 1.x:
Esta es una versión principal nueva, por lo que viene con las siguientes advertencias.
Cambios rotundos: El SDK de Cloud Dataflow 2.x para Java presenta un número de cambios rotundos de la serie de versiones 1.x. Consulta los detalles a continuación.
Incompatibilidad de actualización: El SDK de Cloud Dataflow 2.x para Java no es compatible con las actualizaciones de Cloud Dataflow 1.x. Los trabajos de transmisión que usan el SDK de Cloud Dataflow 1.x no pueden actualizarse para usar el SDK de Cloud Dataflow 2.x. Las canalizaciones de Cloud Dataflow 2.x pueden actualizarse entre versiones a partir de la versión 2.0.0 del SDK.

Contenidos de distribución del SDK de Cloud Dataflow

La distribución del SDK de Cloud Dataflow contiene un subconjunto del ecosistema de Apache Beam. Este subconjunto incluye los siguientes componentes necesarios para definir tu canalización y ejecutarla de forma local y en el servicio de Cloud Dataflow:

  • El SDK principal
  • DirectRunner y DataflowRunner
  • Los componentes de E/S para otros servicios de Google Cloud Platform
  • Apache Kafka

La distribución del SDK de Cloud Dataflow no incluye otros componentes de Beam, como los siguientes:

  • Ejecutores para otros motores de procesamiento distribuidos (como Apache Spark o Apache Flink)
  • Los componentes de E/S para servicios que no son de Cloud Platform y que no se explicitaron antes

Si tu caso práctico requiere componentes que no están incluidos, puedes usar los módulos de Apache Beam apropiados de forma directa y aun así ejecutar tu canalización en el servicio de Cloud Dataflow.

Notas de la versión

En esta sección, se mencionan los cambios más relevantes de cada versión para los clientes de Cloud Dataflow.

La página Descargas de Apache Beam contiene notas de las versiones de los SDK de Apache Beam.

17 de diciembre de 2018

Las siguientes versiones del SDK se retirarán de servicio el 25 de marzo de 2019 debido a la suspensión de la compatibilidad con JSON-RPC y los extremos globales del lote HTTP. Poco después de esta fecha, ya no podrás enviar trabajos de Cloud Dataflow nuevos ni actualizar los trabajos de Cloud Dataflow en ejecución que usen los SDK que se retiraron. Además, los trabajos de transmisión existentes que usan estas versiones del SDK podrían fallar.

  • SDK de Apache Beam para Java, de la versión 2.0.0 a la 2.4.0 (incluida)
  • SDK de Apache Beam para Python, de la versión 2.0.0 a la 2.4.0 (incluida)
  • SDK de Cloud Dataflow para Java, de la versión 2.0.0 a la 2.4.0 (incluida)
  • SDK de Cloud Dataflow para Python, de la versión 2.0.0 a la 2.4.0 (incluida)

Consulta la página de estado de compatibilidad de las versiones del SDK a fin de obtener información detallada sobre el estado de compatibilidad del SDK.

2.5.0 (27 de junio de 2018)

AVISO DE BAJA DE SERVICIO A FUTURO: Esta versión 2.5.0 del SDK de Cloud Dataflow es la última actualización del SDK de Cloud Dataflow para Java independiente de las actualizaciones del SDK de Apache Beam.

La versión 2.5.0 está basada en un subconjunto de Apache Beam 2.5.0. Consulta el anuncio de lanzamiento de Apache Beam 2.5.0 a fin de obtener información adicional sobre los cambios.

Se agregó KafkaIO como parte del SDK de Cloud Dataflow.

Se habilitó BigQueryIO a fin de usar un proyecto diferente para trabajos de carga en modo por lote.

Se agregó la habilidad de inhabilitar la API de lotes en SpannerIO.

Se agregó la opción de proporcionar a BigQueryIO un método para indicar la prioridad: INTERACTIVE o BATCH.

Se arregló DirectRunner para que cuelgue si se establecen múltiples cronómetros en el mismo paquete.

Se mejoraron varios problemas de estabilidad, rendimiento y documentación.

2.4.0 (30 de marzo de 2018)

La versión 2.4.0 está basada en un subconjunto de Apache Beam 2.4.0. Consulta el anuncio de lanzamiento de Apache Beam 2.4.0 a fin de obtener información adicional sobre los cambios.

Se agregó una transformación Wait.on() nueva que permite la secuencia de propósito general de las transformaciones. Wait.on() se puede usar con canalizaciones por lote o de transmisión.

Se aumentó la escalabilidad para supervisar archivos nuevos con transformaciones de E/S, como TextIO.read().watchForNewFiles(). Las pruebas leen con éxito hasta 1 millón de archivos.

BigQueryIO.write() ahora es compatible con particiones basadas en columnas, que permiten cargas más baratas y rápidas de datos históricos a una tabla de partición por tiempo de transferencia. Las particiones basadas en columnas usan un trabajo de carga en total, en lugar de un trabajo de carga por partición.

Se actualizó SpannerIO para usar la API de BatchQuery de Cloud Spanner. La documentación de Cloud Spanner contiene más información sobre cómo usar Cloud Dataflow Connector.

Se actualizaron los contenedores de Cloud Dataflow a fin de que sean compatibles con la política ilimitada de Java Cryptography Extension (JCE).

Se quitó el método obsoleto WindowedValue.valueInEmptyWindows().

Se solucionó un problema de descarte prematuro de datos con ApproximateUnique.

Se mejoraron varios problemas de estabilidad, rendimiento y documentación.

2.3.0 (28 de febrero de 2018)

La versión 2.3.0 está basada en un subconjunto de Apache Beam 2.3.0. Consulta el anuncio de lanzamiento de Apache Beam 2.3.0 a fin de obtener información adicional sobre los cambios.

Ya no hay compatibilidad con Java 7.

Se agregó compatibilidad con plantillas (parámetros ValueProvider) para BigtableIO.

Se agregaron API fluidas de propósito general nuevas para escribir archivos: FileIO.write() y FileIO.writeDynamic(). Las API de DynamicDestinations en TextIO y AvroIO ahora son obsoletas.

MapElements y FlatMapElements ahora son compatibles con entradas adicionales.

Se solucionaron los problemas en BigQueryIO cuando se escribe a tablas con decoradores de partición.

2.2.0 (8 de diciembre de 2017)

La versión 2.2.0 está basada en un subconjunto de Apache Beam 2.2.0. Consulta las notas de la versión de Apache Beam 2.2.0 a fin de obtener información adicional sobre los cambios.

Problemas

Problema conocido: Cuando ejecutas en modo por lote, no se informan las métricas de Gauge.

Problema conocido: La compatibilidad con SQL no está incluida en esta versión porque es experimental y no se probó en Cloud Dataflow. No se recomienda usar SQL.

Actualizaciones y mejoras

Se agregó la capacidad de establecer etiquetas de trabajo en DataflowPipelineOptions.

Se agregó la compatibilidad para leer Avro GenericRecords con BigQueryIO.

Se agregó la compatibilidad para separadores personalizados de múltiples bytes a TextIO.

Se agregó la compatibilidad para supervisar archivos nuevos (TextIO.watchForNewFiles) a TextIO.

Se agregó la compatibilidad para leer una PCollection de nombres de archivos (ReadAll) a TextIO y AvroIO.

Se agregó la compatibilidad para inhabilitar la validación en BigtableIO.write().

Se agregó la compatibilidad para usar el método setTimePartitioning en BigQueryIO.write().

Se mejoraron varios problemas de estabilidad, rendimiento y documentación.

2.1.0 (1 de septiembre de 2017)

La versión 2.1.0 está basada en un subconjunto de Apache Beam 2.1.0. Consulta las notas de la versión de Apache Beam 2.1.0 a fin de obtener información adicional sobre los cambios.

Problemas

Problema conocido: Cuando ejecutas en modo por lote, no se informan las métricas de Gauge.

Actualizaciones y mejoras

Se agregó la detección de posible código estancado, lo que da como resultado entradas de registro Processing lulls.

Se agregó la compatibilidad con métricas para DataflowRunner en modo de transmisión.

Se agregó OnTimeBehavior a WindowinStrategy a fin de controlar la emisión de paneles ON_TIME.

Se agregó la política de nombre de archivo predeterminado para archivos FileBasedSink con ventanas que consumen entradas con ventanas.

Se solucionó un problema en el que se ignoraban los cronómetros de tiempo de procesamiento para ventanas expiradas.

Se solucionó un error en el que DatastoreIO no progresaba cuando Datastore respondía con lentitud.

Se solucionó un problema en el que los archivos bzip2 se leían de forma parcial. Se agregó compatibilidad para los archivos bzip2 concatenados.

Se mejoraron varios problemas de estabilidad, rendimiento y documentación.

2.0.0 (23 de mayo de 2017)

La versión 2.0.0 está basada en un subconjunto de Apache Beam 2.0.0. Consulta las notas de la versión de Apache Beam 2.0.0 a fin de obtener información adicional sobre los cambios.

Problemas

Problema identificado: Cuando se ejecuta en modo de transmisión, no se informan las métricas en la IU Cloud Dataflow.

Problema identificado: Cuando se ejecuta en modo por lotes, no se informan las métricas de Gauge.

Actualizaciones y mejoras

Se agregó compatibilidad para usar la interfaz de Stackdriver Error Reporting.

Se agregó una API nueva en BigQueryIO para escribir a múltiples tablas, tal vez con diferentes esquemas, basadas en datos. Consulta BigQueryIO.Write.to(SerializableFunction) y BigQueryIO.Write.to(DynamicDestinations).

Se agregó una API nueva para escribir colecciones con ventanas y no delimitadas a TextIO y AvroIO. Por ejemplo, consulta TextIO.Write.withWindowedWrites() y TextIO.Write.withFilenamePolicy(FilenamePolicy).

Se agregó TFRecordIO para leer y escribir archivos TFRecord de TensorFlow.

Se agregó la capacidad de registrar CoderProviders automáticamente en el CoderRegistry predeterminado. Los CoderProviders se registran con un ServiceLoader mediante implementaciones concretas de un CoderProviderRegistrar.

Se agregó un requisito adicional de la API de Google. También debes habilitar la API de Cloud Resource Manager.

Se cambió el orden de los parámetros para ParDo con entradas y salidas adicionales.

Se cambió el orden de los parámetros para las transformaciones MapElements y FlatMapElements cuando se especifica un tipo de salida.

Se cambió el patrón de lectura y escritura de tipos personalizados a PubsubIO y KafkaIO.

Se cambió la sintaxis para leer y escribir a TextIO, AvroIO, TFRecordIO, KinesisIO, BigQueryIO.

Se cambió a sintaxis para configurar los parámetros del sistema de ventanas distintos a WindowFn con la transformación Window.

Se consolidaron XmlSource y XmlSink en XmlIO.

Se renombró CountingInput como GenerateSequence y se unificó la sintaxis para producir secuencias limitadas y no limitadas.

Se renombró BoundedSource#splitIntoBundles como #split.

Se renombró UnboundedSource#generateInitialSplits como #split.

Ya no es posible obtener resultados de @StartBundle. En lugar de aceptar un parámetro de tipo Context, este método puede aceptar, de manera opcional, un argumento de tipo StartBundleContext para acceder a PipelineOptions.

Ahora, los resultados de @FinishBundle siempre requieren una marca de tiempo explícita y una ventana. En lugar de aceptar un parámetro de tipo Context, este método puede aceptar, de manera opcional, un argumento de tipo FinishBundleContext para acceder a PipelineOptions y emitir un resultado a ventanas específicas.

XmlIO ya no es parte del SDK principal. Debe agregarse de forma manual con el paquete xml-io nuevo.

Se reemplazó la API de Aggregator con la API de Metrics nueva a fin de crear métricas y contadores definidos por el usuario.


Nota: Todas las versiones 2.0.0-beta están OBSOLETAS.

2.0.0-beta3 (17 de marzo de 2017)

La versión 2.0.0-beta3 se basa en un subconjunto de Apache Beam 0.6.0.

Se cambió TextIO para que solo opere en strings.

Se cambió KafkaIO para que especifique los parámetros de tipo de forma explícita.

Se renombraron las funciones de fábrica a ToString.

Se cambiaron las transformaciones Count, Latest, Sample y SortValues.

Se renombró Write.Bound a Write.

Se renombraron las clases de transformación Flatten.

Se dividió el método GroupByKey.create en los métodos create y createWithFewKeys.

2.0.0-beta2 (2 febrero de 2017)

La versión 2.0.0-beta2 está basada en un subconjunto de Apache Beam 0.5.0.

Se agregó la función PubsubIO que permite que las transformaciones Read y Write proporcionen acceso a los atributos de mensaje de Cloud Pub/Sub.

Se agregó compatibilidad para las canalizaciones con estado mediante la API de estado nueva.

Se agregó compatibilidad para cronómetros con la API de cronómetro nueva. La compatibilidad con esta función está limitada a DirectRunner en esta versión.

2.0.0-beta1 (7 de enero de 2017)

La versión 2.0.0-beta1 está basada en un subconjunto de Apache Beam 0.4.0.

Compresión mejorada: CompressedSource es compatible con la lectura de archivos comprimidos ZIP. TextIO.Write y AvroIO.Write son compatibles con resultados comprimidos.

Se agregó funcionalidad a AvroIO: Write es compatible con el agregado de metadatos de usuario personalizados.

Se agregó funcionalidad a BigQueryIO: Write divide importaciones grandes (> a 12 TiB) masivas en múltiples trabajos de carga de BigQuery, lo que permite que maneje conjuntos de datos muy grandes.

Se agregó funcionalidad a BigtableIO: Write es compatible con PCollections no limitadas y puede usarse en modo de transmisión en DataflowRunner.

A fin de obtener los detalles completos, consulta las notas de la versión de Apache Beam 0.3.0-incubating, 0.4.0 y 0.5.0.

Con esta distribución, se pueden usar otros módulos de Apache Beam de la versión correspondiente, incluidos los conectores de E/S adicionales como Java Message Service (JMS), Apache Kafka, Java Database Connectivity (JDBC), MongoDB y Amazon Kinesis. Consulta el sitio de Apache Beam para obtener detalles.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.