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

En esta página, se documentan las actualizaciones de producción del servicio SDK de Dataflow 1.x para Java. Puedes revisar esta página de forma periódica para ver anuncios sobre las características nuevas o actualizadas, las correcciones de errores, los problemas comunes y las funciones obsoletas. A fin de obtener más información sobre la versión 2.x del SDK de Dataflow para Java, consulta las notas de la versión.

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

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

16 de octubre de 2018

El SDK de Cloud Dataflow 1.x para Java no es compatible desde el 16 de octubre de 2018. Muy pronto, el servicio de Cloud Dataflow rechazará los trabajos nuevos de Cloud Dataflow que se basan en el SDK de Cloud Dataflow 1.x para Java. Consulta Migra desde el SDK de Cloud Dataflow 1.x para Java si deseas obtener instrucciones relacionadas con la migración.

1.9.1 (28 de agosto de 2017)

Se corrigió un problema con trabajos de Dataflow que lee de CompressedSource con tipo de compresión configurado en BZIP2 pierde datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

1.9.0 (20 de diciembre de 2016)

Problema identificado: Los trabajos de Dataflow que leen de CompressedSource con el tipo de compresión configurado en BZIP2 pierden datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

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

Se agregó la interfaz ValueProvider para usar en opciones de canalización. Realizar una opción de tipo ValueProvider<T> en vez de T permite que su valor se suministre en un entorno de ejecución (en vez de en un tiempo de construcción de canalización) y habilita las plantillas de Cloud Dataflow. La compatibilidad con ValueProvider se agregó a TextIO, PubSubIO y BigQueryIO, y también se puede agregar a PTransforms arbitrarias. Consulta la documentación de las plantillas de Cloud Dataflow para obtener más detalles.

Se agregó la capacidad para guardar de manera automática información del perfil en Google Cloud Storage con la opción de canalización --saveProfilesToGcs. Para obtener más información sobre canalizaciones de perfiles ejecutadas por el DataflowPipelineRunner, consulta problema n.º 72 de GitHub.

La opción de canalización --enableProfilingAgent que guardó perfiles en los discos de trabajadores individuales es obsoleta. Para obtener más información sobre canalizaciones de perfiles ejecutadas por DataflowPipelineRunner, consulta problema n.º 72 de GitHub.

Se cambió FileBasedSource para que haga una excepción cuando lea de un patrón de archivo sin coincidencias. Las canalizaciones fallarán en el entorno de ejecución en vez de no leer datos en silencio en este caso. Este cambio afecta a TextIO.Read o a AvroIO.Read cuando se configura withoutValidation.

Se mejoró la validación Coder en el DirectPipelineRunner para capturar codificadores que no pueden codificar y decodificar de manera correcta su entrada.

Se mejoraron los datos mostrados en todas las transformaciones de núcleo, incluidos los arreglos de controlador correctos en PipelineOptions.

Se mejoró el rendimiento de las canalizaciones con el DataflowPipelineRunner en modo de transmisión.

Se mejoró la escalabilidad del InProcessRunner, que habilita la prueba con conjuntos de datos más grandes.

Se mejoró la limpieza de archivos temporales creados por TextIO, AvroIO y otras implementaciones de FileBasedSource.

1.8.1 (12 de diciembre de 2016)

Problema identificado: Los trabajos de Dataflow que leen de CompressedSource con el tipo de compresión configurado en BZIP2 pierden datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

Se mejoró el rendimiento de entradas laterales delimitados en el DataflowPipelineRunner.

1.8.0 (3 de octubre de 2016)

Problema identificado: Los trabajos de Dataflow que leen de CompressedSource con el tipo de compresión configurado en BZIP2 pierden datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

Se agregó compatibilidad a BigQueryIO.Read para consultas en el dialecto de SQL estándar nuevo de BigQuery con .withStandardSQL().

Se agregó compatibilidad en BigQueryIO para los tipos nuevos BYTES, TIME, DATE y DATETIME.

Se agregó compatibilidad a BigtableIO.Read para leer desde un rango de clave restringido con .withKeyRange(ByteKeyRange).

Se mejoró la división inicial de los archivos grandes sin comprimir en CompressedSource, que genera un mejor rendimiento cuando se ejecutan las canalizaciones por lotes que usa TextIO.Read en el servicio de Cloud Dataflow.

Se corrigió una regresión de rendimiento cuando se usa BigQueryIO.Write en modo de transmisión.

1.7.0 (9 de septiembre de 2016)

Problema identificado: Los trabajos de Dataflow que leen de CompressedSource con el tipo de compresión configurado en BZIP2 pierden datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

Problema identificado: Identificamos una regresión de rendimiento en BigQueryIO.Write. Cuando se ejecuta en modo de transmisión, los usuarios pueden ver un aumento pequeño en las inserciones fallidas, pero no se perderán o duplicarán los datos. Para obtener más información, consulta problema nº 451 en el repositorio de GitHub.

Se agregó compatibilidad para la API de Cloud Datastore v1 en el nuevo com.google.cloud.dataflow.sdk.io.datastore.DatastoreIO. Dejó de estar disponible la clase anterior DatastoreIO que solo era compatible con la API de Cloud Datastore v1beta2 obsoleta.

Se mejoró DatastoreIO.Read a fin de que sea compatible con el rebalanceo de trabajo dinámico y se agregó una opción para controlar la cantidad de divisiones de consultas con withNumQuerySplits.

Se mejoró DatastoreIO.Write para que trabaje con una PCollection no delimitada que sea compatible con la escritura en Cloud Datastore cuando se usa DataflowPipelineRunner en modo de transmisión.

Se agregó la capacidad de borrar objetos Entity de Cloud Datastore directamente con Datastore.v1().deleteEntity o de borrar entidades por clave con Datastore.v1().deleteKey.

Se agregó la compatibilidad para leer desde un BoundedSource al DataflowPipelineRunner en modo de transmisión. Esto habilita el uso de TextIO.Read, AvroIO.Read y otras fuentes limitadas en estas canalizaciones.

Se agregó la compatibilidad para escribir de manera opcional un encabezado o un pie de página en archivos de texto producidos con TextIO.Write.

Se agregó la capacidad para controlar la cantidad de fragmentaciones de salida producidas cuando se usa un Sink.

Se agregó TestStream para habilitar la prueba de activadores con paneles múltiples y datos tardíos con el InProcessPipelineRunner.

Se agregó la capacidad para controlar la tasa en la que UnboundedCountingInput produce elementos mediante withRate(long, Duration).

Se mejoró el rendimiento y la estabilidad para las canalizaciones mediante el DataflowPipelineRunner en modo de transmisión.

A fin de ser compatible con TestStream, se volvió a implementar DataflowAssert para usar GroupByKey en vez de sideInputs y poder verificar afirmaciones. Este es un cambio de actualización incompatible en DataflowAssert para canalizaciones que se ejecutan en el DataflowPipelineRunner en modo de transmisión.

Se corrigió un problema en el que un FileBasedSink no producía ningún archivo cuando escribía un PCollection vacío.

Se corrigió un problema en el que BigQueryIO.Read no podía consultar una tabla en una región fuera de US cuando se usaba el DirectPipelineRunner o el InProcessPipelineRunner.

Se corrigió un problema en el que la combinación de marcas de tiempo cerca del final de la ventana global y una gran allowedLateness podían causar una IllegalStateException para las canalizaciones ejecutadas en el DirectPipelineRunner.

Se corrigió una NullPointerException que se podía lanzar durante la muestra de canalización cuando se usaba un activador AfterWatermark sin activaciones tardías.

1.6.1 (8 agosto de 2016)

Problema identificado: Los trabajos de Dataflow que leen de CompressedSource con el tipo de compresión configurado en BZIP2 pierden datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

Se corrigió un problema con los trabajos de Dataflow que leen de TextIO con tipo de compresión configurado en GZIP o BZIP2. Para obtener más información, consulta problema n.º 356 en el repositorio de GitHub.

1.6.0 (10 de junio de 2016)

Problema identificado: Los trabajos de Dataflow que leen de CompressedSource con el tipo de compresión configurado en BZIP2 pierden datos durante el procesamiento. Para obtener más información, consulta problema n.º 596 en el repositorio de GitHub.

Problema identificado: Los trabajos de Dataflow que leen de TextIO con el tipo de compresión configurado en GZIP o BZIP2 pierden datos durante el procesamiento. Se les aconseja a los usuarios que empleen las soluciones alternativas que se analizan en el problema n.º 356 del repositorio de GitHub.

Se agregaron datos de visualización, que permiten anotar funciones de usuario (DoFn, CombineFn y WindowFn), Source, y Sink con metadatos estáticos para mostrar en la interfaz de Dataflow Monitoring. Los datos de visualización se implementaron para componentes de núcleo y se aplican de manera automática en todas las PipelineOptions.

Se agregaron los métodos getSplitPointsConsumed y getSplitPointsRemaining a la API BoundedReader para mejorar la capacidad de Dataflow a fin de escalar de manera automática la lectura de un trabajo desde estos recursos. Se proporcionaron las implementaciones predeterminadas de estas funciones, pero los implementadores de lectores deben reemplazarlos para proporcionar información mejor cuando esté disponible.

Se agregó la capacidad de redactar CombineFn múltiples en un solo CombineFn mediante CombineFns.compose o CombineFns.composeKeyed.

Se agregó InProcessPipelineRunner, una mejora en el DirectPipelineRunner que implementa mejor el modelo de Dataflow. InProcessPipelineRunner se ejecuta en la máquina local de un usuario y es compatible con ejecuciones multiproceso, PCollections no delimitadas y activadores para resultados especulativos y tardíos.

Se volvió a implementar BigQueryIO para que las implementaciones InProcessPipelineRunner y DirectPipelineRunner se ejecuten de manera similar a DataflowPipelineRunner. Ahora, debes especificar el parámetro de ejecución --tempLocation cuando usas DirectPipelineRunner o InProcessPipelineRunner.

Se mejoró el rendimiento de las entradas laterales cuando usas trabajadores con varios núcleos.

Se mejoró la eficiencia cuando usas CombineFnWithContext.

Se corrigieron varios problemas relacionados con la estabilidad en el modo de transmisión.

1.5.1 (15 de abril de 2016)

  • Se corrigió un problema que ocultaba BigtableIO.Read.withRowFilter, lo que permite que las filas de Cloud Bigtable se filtren en la transformación Read.
  • Se corrigió la compatibilidad para archivos concatenados GZip.
  • Se corrigió un problema que evitaba que Write.to se use con ventanas combinadas.
  • Se corrigió un problema que causaba una activación excesiva con activadores compuestos repetidos.
  • Se corrigió un problema con las ventanas combinadas y los activadores que terminan antes del final de una ventana.

1.5.0 (14 de marzo de 2016)

Con esta versión, comenzamos a preparar el SDK de Dataflow para Java a fin de lograr un cambio eventual a Apache Beam (en formación). Se volvieron a diseñar de manera específica ciertas API internas y se quitaron de las clases de SDK que se usan solo en el trabajador, el que ahora se proporcionará con el servicio de Google Cloud Dataflow durante la ejecución del trabajo. Este rediseño no debe afectar a ningún código de usuario.

Además, la versión 1.5.0 incluye los cambios siguientes:

  • Se habilitó un formato de entrada lateral indexado para canalizaciones por lotes ejecutadas en el servicio de Google Cloud Dataflow. Las entradas laterales indexadas aumentan el rendimiento de manera significativa para View.asList, View.asMap, View.asMultimap y cualquier PCollectionView de ventanas no globales.
  • Se actualizó la versión del búfer de protocolo 3.0.0-beta-1. Si usas el búfer de protocolo personalizado, debes recompilarlos con la versión correspondiente del compilador protoc. Puedes continuar con el uso de las versiones 2 y 3 de la sintaxis del búfer de protocolo y no se necesita cambiar ningún código de canalización de usuario.
  • Se agregó ProtoCoder, que es un Coder para mensajes de búfer de protocolo compatible con las versiones 2 y 3 de la sintaxis del búfer de protocolo. Este codificador puede detectar cuando los mensajes se pueden codificar de manera determinista. Proto2Coder es obsoleto; recomendamos que todos los usuarios cambien a ProtoCoder.
  • Se agregó withoutResultFlattening a BigQueryIO.Read para inhabilitar la compactación de los resultados de consulta cuando se lee desde BigQuery.
  • Se agregó BigtableIO, a fin de habilitar la compatibilidad para leer desde Google Cloud Bigtable y escribir en él.
  • Se mejoró CompressedSource para detectar el formato de compresión de acuerdo con la extensión de archivo. Se agregó compatibilidad para leer archivos .gz que se descomprimen de manera transparente por la lógica de transporte subyacente.
Apache Beam™ es una marca registrada de The Apache Software Foundation o sus filiales en Estados Unidos o en otros países.

1.4.0 (22 de enero de 2016)

  • Se agregaron una serie de canalizaciones ejemplo de transmisión y por lotes en un dominio de videojuegos para dispositivos móviles que ilustran algunos temas avanzados, incluidos los sistemas de ventanas y activadores.
  • Se agregó compatibilidad para funciones Combine a fin de acceder a opciones de canalización y entradas laterales a través de un contexto. Consulta GlobalCombineFn y PerKeyCombineFn para obtener más detalles.
  • Se modificó ParDo.withSideInputs() de tal manera de que las llamadas sucesivas sean acumulativas.
  • Se modificó la detección de codificador automática de los mensajes del búfer de protocolo; esas clases ahora tienen sus codificadores proporcionados de manera automática.
  • Se agregó compatibilidad para limitar la cantidad de resultados que muestra DatastoreIO.Source. Sin embargo, cuando el límite está configurado, la operación que lee de Cloud Datastore se realiza por un solo trabajador en vez de ejecutarse en paralelo en el grupo de trabajadores.
  • Se modificó la definición de PaneInfo.{EARLY, ON_TIME, LATE} para que los paneles con solo datos tardíos estén siempre LATE, y un panel ON_TIME no pueda causar nunca un cálculo tardío a fin de rendir en un panel LATE.
  • Se modificó GroupByKey a fin de que descarte datos tardíos cuando estos llegan para una ventana que caducó. Una ventana caducada significa que el final de la ventana se pasa por más de la tardanza permitida.
  • Cuando usas GlobalWindows, ya no necesitas especificar withAllowedLateness(), ya que no se descarta ningún dato.
  • Se agregó compatibilidad para obtener el ID del proyecto predeterminado de la configuración de proyecto predeterminada producida por versiones nuevas de la utilidad gcloud. Si no existe la configuración de proyecto predeterminada, Dataflow vuelve a usar la configuración de proyecto anterior generada por versiones anteriores de la utilidad gcloud.

1.3.0 (4 diciembre de 2015)

  • Se mejoró IterableLikeCoder para codificar con eficiencia valores pequeños. Este cambio es compatible con versiones anteriores, sin embargo, si tienes una canalización en ejecución que se construyó con una versión de SDK 1.3.0 o posterior, no será posible “actualizarla” con un reemplazo construido con una versión de SDK 1.2.1 o anterior. Sin embargo, actualizar una canalización en ejecución con una canalización construida con una versión de SDK nueva debería tener éxito.
  • Cuando TextIO.Write o AvroIO.Write dan como resultado una cantidad fija de archivos, se agrega un paso para volver a fragmentar (de manera aleatoria) justo antes del paso de escritura. El costo de la refragmentación se suele exceder por el paralelismo adicional disponible a la etapa anterior.
  • Se agregó compatibilidad para las marcas de tiempo RFC 3339 en PubsubIO. Esto permite la lectura desde temas de Cloud Pub/Sub publicados por Cloud Logging sin perder información de las marcas de tiempo.
  • Se mejoró la administración de memoria para evitar que las canalizaciones en el modo de ejecución en transmisión se detengan cuando se ejecutan con una utilización de memoria alta. Eso beneficia a las canalizaciones con resultados GroupByKey grandes.
  • Se agregó capacidad para personalizar marcas de tiempo de ventanas emitidas. Antes, la marca de agua se mantenía en la primera marca de tiempo de cualquier entrada almacenada en búfer. Con este cambio, puedes elegir un momento posterior para permitir que la marca de agua progrese. Por ejemplo, usar el final de la ventana evitará que las sesiones de larga duración detengan la salida. Consulta Window.Bound.withOutputTime().
  • Se agregó una sintaxis simplificada para activaciones tardías y tempranas con un activador AfterWatermark, como el siguiente: AfterWatermark.pastEndOfWindow().withEarlyFirings(...).withLateFirings(...).

1.2.1 (21 octubre de 2015)

  • Se corrigió una regresión en BigQueryIO que imprimía sin necesidad muchos mensajes cuando se ejecutaba con DirectPipelineRunner.

1.2.0 (5 de octubre de 2015)

  • Se agregó compatibilidad para Java 8. Se agregaron transformaciones MapElements y FlatMapElements nuevas que aceptan lambdas para Java 8, en los casos en que no se requiere toda la potencia de ParDo. Filter y Partition aceptan lambdas también. La funcionalidad de Java 8 se demuestra en un ejemplo de MinimalWordCountJava8 nuevo.
  • Se habilitaron anotaciones de @DefaultCoder para tipos genéricos. Antes, una anotación de @DefaultCoder en un tipo genérico se ignoraba, lo cual generaba una disminución de la funcionalidad y mensajes de error confusos. Ahora, funciona como se esperaba.
  • DatastoreIO es ahora compatible con lecturas (paralelas) dentro de espacios de nombres. Las entidades se pueden escribir en espacios de nombres si se configura el espacio de nombres en la clave Entity.
  • Se limitó la dependencia slf4j-jdk14 al alcance test. Cuando un trabajo de Dataflow está en ejecución, el sistema proporcionará las dependencias slf4j-api, slf4j-jdk14, jcl-over-slf4j, log4j-over-slf4j y log4j-to-slf4j.

1.1.0 (15 de septiembre de 2015)

  • Se agregó un codificador para el tipo Set<T> al registro de codificador, cuando el tipo T tiene su propio codificador registrado.
  • Se agregó NullableCoder, que se puede usar en conjunto con otros codificadores para codificar una PCollection cuyos elementos pueden contener valores null.
  • Se agregó Filter como un PTransform compuesto. Métodos estáticos obsoletos en una implementación Filter anterior que muestra transformaciones ParDo.
  • Se agregó SourceTestUtils, que es un conjunto de funciones de ayuda y agentes de prueba para probar la exactitud de las implementaciones de Source.

1.0.0 (10 de agosto de 2015)

  • La versión inicial de disponibilidad general (GA), abierta a todos los desarrolladores y considerada estable y calificada por completo para el uso de producción. Coincide con la disponibilidad general del servicio de Dataflow.
  • Se quitaron los valores predeterminados para numWorkers, maxNumWorkers y opciones de configuración similares. Si no están especificados, el servicio de Dataflow elegirá un valor correspondiente.
  • Se agregaron verificaciones a DirectPipelineRunner para garantizar que DoFn cumplan con el requisito existente que las entradas y salidas no se deben modificar.
  • Se agregó compatibilidad en AvroCoder para campos @Nullable con codificación determinista.
  • Se agregó un requisito para que las subclases anónimas CustomCoder anulen el método getEncodingId.
  • Se cambió Source.Reader, BoundedSource.BoundedReader, UnboundedSource.UnboundedReader para que sean clases abstractas, en vez de interfaces. AbstractBoundedReader se fusionó con BoundedSource.BoundedReader.
  • Se cambió el nombre de ByteOffsetBasedSource y ByteOffsetBasedReader a OffsetBasedSource y OffsetBasedReader, y se ingresó getBytesPerOffset como una capa de traducción.
  • Se cambió OffsetBasedReader de tal manera que ahora la subclase tiene que anular startImpl y advanceImpl, en vez de start y advance. Ahora, la clase base oculta y actualiza la variable protegida rangeTracker de manera automática. Para indicar puntos de división, usa el método isAtSplitPoint.
  • Se quitaron métodos para ajustar los activadores de marca de agua.
  • Se quitó un parámetro genérico que no se necesitaba de TimeTrigger.
  • Se quitó la generación de paneles vacíos, a menos que se solicite de manera explícita.

0.4.150727 (27 julio de 2015)

  • Se quitó el requisito para configurar de manera explícita --project si el SDK de Google Cloud tiene establecida la configuración de proyecto predeterminada.
  • Se agregó compatibilidad para crear fuentes de BigQuery desde una consulta.
  • Se agregó compatibilidad para fuentes personalizadas no delimitadas en el DirectPipelineRunner y DataflowPipelineRunner. Consulta UnboundedSource para obtener más detalles.
  • Se quitó un argumento que no era necesario ExecutionContext en BoundedSource.createReader y métodos relacionados.
  • Se cambió BoundedReader.splitAtFraction a fin de requerir seguridad en los subprocesos (es decir, seguridad para llamar de manera asíncrona a advance o start). Se agregó RangeTracker para ayudar a implementar lectores de subprocesos seguros. Se les recomienda a los usuarios que usen la clase en vez de implementar una solución ad-hoc.
  • Se modificaron las transformaciones Combine. Para ello, se elevaron a GroupByKey (y por encima) a fin de obtener un rendimiento mejor.
  • Se modificaron los activadores de manera tal que, después de un GroupByKey, el sistema cambiará a “activador de continuación”, el cual intenta conservar la intención original con respecto al control de activadores tardíos y especulativos en vez de mostrar al activador predeterminado.
  • Se agregó WindowFn.getOutputTimestamp y se cambió el comportamiento GroupByKey para permitir que las ventanas superpuestas incompletas no detengan el progreso de ventanas completadas anteriores.
  • Se cambió el comportamiento de activación para que los paneles vacíos se produzcan si son el primer panel después de la marca de agua (ON_TIME) o el panel final.
  • Se quitó la clase constructora intermedia Window.Trigger.
  • Se agregó validación que permite que el retraso se especifique en la Window PTransform cuando se especifica un activador.
  • Vuelve a habilitar la verificación del uso de GroupByKey. La clave debe tener un codificador determinista y el uso de GroupByKey con una PCollection no delimitada requiere sistema de ventanas o activadores.
  • Se cambiaron los nombres PTransform para que ya no contengan los caracteres '=' o ';'.

0.4.150710 (10 julio de 2015)

  • Se agregó compatibilidad para tablas por ventanas a BigQueryIO.
  • Se agregó compatibilidad en una implementación de fuente personalizada para Avro. Consulta AvroSource para obtener más detalles.
  • Se quitó la restricción de carga del archivo de tamaño 250GiB de Google Cloud Storage.
  • Se corrigió el error de creación de la tabla BigQueryIO.Write en el modo de transmisión.
  • Se cambió Source.createReader() y BoundedSource.createReader() para que sean abstractos.
  • Se trasladó Source.splitIntoBundles() a BoundedSource.splitIntoBundles()
  • Se agregó compatibilidad a fin de leer vistas limitadas de una transmisión de Pub/Sub en PubsubIO para DataflowPipeline y DirectPipeline sin transmisión.
  • Se agregó compatibilidad para obtener un Coder con una Class al CoderRegistry.
  • Se cambió CoderRegistry.registerCoder(Class<T>, Coder<T>) para asegurar de que el codificador proporcionado codifique en realidad los valores de la clase dada, y su uso con tipos sin formato de clases genéricas está prohibido y, en general, no funcionará de manera correcta.
  • Se migró a Create.withCoder() y CreateTimestamped.withCoder() en vez de llamar a setCoder() en la salida PCollection cuando el Create PTransform se aplica.
  • Se agregaron tres ejemplos más detallados de WordCount de manera sucesiva.
  • Se quitó PTransform.getDefaultName() debido que era redundante con PTransform.getKindString().
  • Se agregó compatibilidad a una verificación de nombre único para PTransform durante la creación del trabajo.
  • Se quitó PTransform.withName() y PTransform.setName() El nombre de una transformación es inmutable después de una construcción. Las transformaciones de biblioteca (como Combine) pueden proporcionar métodos similares al de un desarrollador para cambiar el nombre. Los nombres siempre se pueden anular en la ubicación en la que la transformación se aplica con apply("name", transform).
  • Se agregó la capacidad de seleccionar la red para VM de trabajador mediante DataflowPipelineWorkerPoolOptions.setNetwork(String)

0.4.150602 (2 de junio de 2015)

  • Se agregó una dependencia en el componente gcloud core de la versión 2015.02.05 o posterior. Actualiza con la última versión de gcloud mediante la ejecución de gcloud components update. Consulta Credencial predeterminada de la aplicación para obtener más detalles sobre cómo se pueden especificar las credenciales.
  • Se quitó el Flatten.create() obsoleto. Usa Flatten.pCollections() en su lugar.
  • Se quitó el Coder.isDeterministic() obsoleto. Implementa Coder.verifyDeterministic() en su lugar.
  • Se reemplazó DoFn.Context#createAggregator con DoFn#createAggregator.
  • Se agregó compatibilidad para consultar el valor actual de un Aggregator. Consulta PipelineResult para obtener más información.
  • Se agregó DoFnWithContext experimental para simplificar el acceso a información adicional desde DoFn.
  • Se quitó RequiresKeyedState experimental.
  • Se agregó CannotProvideCoderException a fin de indicar incapacidad para indicar un codificador, en vez de mostrar null en esos casos.
  • Se agregó CoderProperties para ensamblar paquetes de verificación en codificadores definidos por el usuario.
  • Se reemplazó un constructor de PDone con una fábrica estática PDone.in(Pipeline).
  • Se actualizó el formato de la string de los valores TIMESTAMP mostrados por la fuente de BigQuery cuando se usa DirectPipelineRunner o cuando los datos de BigQuery se usan como una entrada lateral que se alinea con el caso cuando los datos de BigQuery se usan como una entrada principal.
  • Se agregó un requisito de que el valor que muestra Source.Reader.getCurrent() sea inmutable y permanezca válido de manera indefinida.
  • Se reemplazaron ciertos usos de Source con BoundedSource. Por ejemplo, la transformación Read.from() se puede aplicar solo a objetos BoundedSource.
  • Se movió el control de datos tardíos experimental, es decir, los datos que llegan a la canalización de transmisión después de que la marca de agua lo pasó, de PubSubIO a Window. Los datos tardíos volverán a la configuración predeterminada para que luego se descarten en la primera GroupByKey posterior a una operación Read. Para permitir datos tardíos, usa Window.Bound#withAllowedLateness.
  • Se agregó compatibilidad experimental para acumular elementos dentro de una ventana a través de paneles.

0.4.150414 (14 abril de 2015)

  • Lanzamiento en versión Beta del SDK de Dataflow para Java.
  • Se mejoró el rendimiento de la ejecución en varias áreas del sistema.
  • Se agregó compatibilidad para la estimación del progreso y el rebalanceo dinámico del trabajo en fuentes definidas por el usuario.
  • Se agregó compatibilidad para fuentes definidas por el usuario a fin de proporcionar la marca de tiempo de los valores leídos a través de Reader.getCurrentTimestamp().
  • Se agregó compatibilidad para receptores definidos por el usuario.
  • Se agregó compatibilidad para tipos personalizados en PubsubIO.
  • Se agregó compatibilidad para leer y escribir archivos en formato XML. Consulta XmlSource y XmlSink.
  • Se cambió el nombre de DatastoreIO.Write.to a DatastoreIO.writeTo. Además, las entidades escritas en Cloud Datastore deben tener claves completas.
  • Se cambió el nombre de la transformación ReadSource a Read.
  • Se reemplazó Source.createBasicReader con Source.createReader.
  • Se agregó compatibilidad con activadores, lo que permite obtener resultados tempranos o parciales para una ventana y especificar cuándo procesar datos tardíos. Consulta Window.into.triggering.
  • Se disminuyó la visibilidad de los getInput(), getOutput(), getPipeline(), y getCoderRegistry() de PTransform. Esos métodos se borrarán pronto.
  • Se cambió el nombre de DoFn.ProcessContext#windows a DoFn.ProcessContext#window. Para que DoFn llame a DoFn.ProcessContext#window, debe implementar RequiresWindowAccess.
  • Se agregó DoFn.ProcessContext#windowingInternals para habilitar el sistema de ventanas en ejecutores de terceros.
  • Se agregó compatibilidad para entradas laterales cuando se ejecutan canalizaciones de transmisión en el [Blocking]DataflowPipelineRunner.
  • Se cambió [Keyed]CombineFn.addInput() para mostrar el valor de acumulador nuevo. Se cambió el nombre de Combine.perElement().withHotKeys() a Combine.perElement().withHotKeyFanout().
  • Se cambió el nombre de First.of a Sample.any y RateLimiting a IntraBundleParallelization para representar mejor su funcionalidad.

0.3.150326 (26 marzo de 2015)

  • Se agregó compatibilidad para acceder a PipelineOptions en el trabajador de Dataflow.
  • Se quitó uno de los parámetros de tipo en PCollectionView, que podría requerir cambios simples para el código de usuario que usa PCollectionView.
  • Se cambió la API de entrada lateral para aplicar por ventana. Ahora, las llamadas a sideInput() solo muestran valores en la ventana específica que corresponde a la ventana del elemento de entrada principal y no a la entrada lateral completa PCollectionView. En consecuencia, ya no se puede llamar a sideInput() desde startBundle y finishBundle de un DoFn.
  • Se agregó compatibilidad para la vista de una PCollection como un Map cuando se usa como una entrada lateral. Consulta View.asMap().
  • Se renombró la API de fuente personalizada para que use el término “bundle” en vez de “shard” en todos los nombres. Además, el término “fork” se reemplazó con “dynamic split”.
  • La fuente personalizada Reader requiere la implementación de un método nuevo start(). El código existente se puede corregir si se agrega este método que llama a advance() y muestra su valor. Además, el código que usa el Reader se debe actualizar para usar start() y advance(), en vez de solo advance().

0.3.150227 (27 de febrero de 2015)

  • Lanzamiento en versión Alfa del SDK de Dataflow para Java que posee compatibilidad con canalizaciones de transmisión.
  • Se agregó el verificador de determinismo a AvroCoder para interoperar con GroupByKey con más facilidad.
  • Se agregó compatibilidad para acceder a PipelineOptions en el trabajador.
  • Se agregó compatibilidad para fuentes comprimidas.

0.3.150211 (11 febrero de 2015)

  • Se quitó la dependencia en la versión 2015.02.05 o posterior del componente gcloud core.

0.3.150210 (11 febrero de 2015)

Precaución: Depende de la versión 2015.02.05 o posterior del componente gcloud core.

  • Se incluyó un ejecutor de canalización de transmisión que, por ahora, requiere que se incluya en la lista blanca adicional.
  • Se renombraron varias API relacionadas con el sistema de ventanas en una manera no compatible con versiones anteriores.
  • Se agregó compatibilidad para fuentes personalizadas, las cuales puedes usar a fin de leer desde tus propios formatos de entrada.
  • Se ingresó paralelismo de trabajador: una tarea por procesador.

0.3.150109 (10 de enero de 2015)

  • Se corrigieron varios problemas específicos de la plataforma para Microsoft Windows.
  • Se corrigieron varios problemas específicos para Java 8.
  • Se agregaron varios ejemplos nuevos.

0.3.141216 (16 diciembre de 2014)

  • Lanzamiento en versión Alfa del SDK de Dataflow para Java.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.