Notas de la versión: SDK de Cloud Dataflow para Python

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

En esta página, se documentan las actualizaciones de producción del SDK de Cloud Dataflow para Python. 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.

El SDK de Cloud Dataflow para Python ahora es compatible con la ejecución de transferencias (Beta), a partir del SDK de Cloud Dataflow 2.5.0.

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.

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 (GCP)

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

  • Ejecutores para otros motores de procesamiento distribuidos
  • Los componentes E/S para otros servicios que no son de GCP

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.

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 DEL SERVICIO A FUTURO: La versión 2.5.0 del SDK de Cloud Dataflow es la última actualización del SDK de Cloud Dataflow para Python independiente de las actualizaciones del SDK de Apache Beam. El servicio de Cloud Dataflow será compatible en su totalidad con las versiones oficiales del SDK de Apache Beam. Se recomienda a los usuarios que comiencen a planificar el uso del SDK de Apache Beam para sus canalizaciones, en lugar del SDK de Cloud Dataflow. El servicio de Cloud Dataflow también será compatible con los SDK de Apache Beam de actualizaciones anteriores a partir de la versión 2.0.0 y posteriores. Consulta la página de compatibilidad de Cloud Dataflow para obtener el estado de compatibilidad de varios SDK.

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](https://lists.apache.org/thread.html/9cd70450319147ef1fd34305089216fed156a26d9ee77f386c024629@%3Cuser.beam.apache.org%3E) a fin de obtener información adicional sobre los cambios.

Se agregó compatibilidad para las entradas laterales a fin de realizar canalizaciones de transmisión.

Se cambió ReadFromPubSub y PTransform para que sean compatibles con label_ids y timestamp_attributes.

Se agregó el FileSystem HDFS.

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ó un DirectRunner de Python nuevo, que es hasta 15 veces más rápido que el DirectRunner anterior.

Se agregó una transformación nueva de tfrecordio.ReadAllFromTfRecord, que lee una PCollection de globs que contienen archivos TfRecord.

Se agregó compatibilidad inicial para el sistema de archivos distribuido Hadoop (HDFS).

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.

Se agregó el conector de E/S vcfio para Variant Call Format (VCF, Formato de llamada variante).

Los registros de Stackdriver ahora contendrán mensajes de inactividad cada vez que un trabajador pase más de 5 minutos en un estado.

Se agregó compatibilidad para la API divisible DoFn en DirectRunner.

Reintentar el empaquetado de DirectRunner ahora es el comportamiento predeterminado.

Se corrigió un problema con el método cancel de DataflowPipelineResult.

Ya no se necesita autenticación para leer los archivos públicos de Cloud Storage.

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.

Se agregaron dos nuevas Read PTransforms (textio.ReadAllFromText y avroio.ReadAllFromText) que se pueden usar para leer una gran cantidad de archivos.

Se agregó compatibilidad de la regulación adaptable con DatastoreIO.

Mejoras de DirectRunner: DirectRunner volverá a intentar el procesamiento de paquetes fallidos de forma opcional y, ahora, las canalizaciones de transmisión se pueden cancelar con Ctrl + C.

Mejoras de DataflowRunner: se agregó compatibilidad para cancel, wait_until_finish(duration) y etiquetas de trabajo.

Texto y formato pydoc mejorados.

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

2.1.1 (22 de septiembre de 2017)

La versión 2.1.1 está basada en un subconjunto de Apache Beam 2.1.1.

Se corrigió un problema de compatibilidad con el paquete six de Python.

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.

Problema identificado: esta versión tiene un problema de compatibilidad con el paquete six 1.11.0 de Python. Soluciona este problema con la ejecución de pip install google-cloud-dataflow==2.1.0 six==1.10.0.

Compatibilidad de transmisión limitada en DirectRunner con fuente y receptor de Cloud Pub/Sub y receptor de BigQuery.

Se agregó compatibilidad para las opciones de canalización --subnetwork y --dry_run nuevas. Se agregó compatibilidad experimental para la opción de canalización --beam_plugins nueva.

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 (31 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.

Esta versión incluye cambios rotundos.

Problema identificado: esta versión tiene un problema de compatibilidad con el paquete six 1.11.0 de Python. Soluciona este problema con la ejecución de pip install google-cloud-dataflow==2.0.0 six==1.10.0.

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

Se agregó compatibilidad para las plantillas de Cloud Dataflow a receptores y fuentes basados en archivos (por ej. TextIO, TfRecordIO, AvroIO).

Se agregó compatibilidad para la marca region.

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

Se movieron las opciones de canalización a los módulos de opciones.

finish_bundle ahora solo permite emitir valores de ventana.

Se movió el código relacionado con la prueba a apache_beam.testing y se movieron assert_that, is_empty y equal_to a apache_beam.testing.util.

Se cambiaron los siguientes nombres:

  • Se usa apache_beam.io.filebasedsink en lugar de apache_beam.io.file.
  • Se usa apache_beam.io.filesystem en lugar de apache_beam.io.fileio.
  • Se usa TaggedOutput en lugar de SideOutputValue.
  • Se usa AfterAny en lugar de AfterFirst.
  • Se usa apache_beam.options en lugar de apache_beam.util para pipeline_options y las importaciones relacionadas.

Se quitó la capacidad de emitir valores desde start_bundle.

Se quitó la compatibilidad para todas las credenciales que no sean las credenciales predeterminadas de la aplicación. Se quitaron las marcas --service_account_name y --service_account_key_file.

Se quitó IOChannelFactory y se lo reemplazó con BeamFileSystem.

Se quitó el parámetro obsoleto context de DoFn.

Se quitaron SingletonPCollectionView, IterablePCollectionView, ListPCollectionView y DictPCollectionView. En su lugar, se usan AsSingleton, AsIter, AsList y AsDict.

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


Nota: Todas las versiones anteriores a la 2.0.0 están OBSOLETAS.

0.6.0 (23 de marzo de 2017)

Esta versión incluye cambios rotundos.

Problema identificado: las canalizaciones de Cloud Dataflow que leen los resultados GroupByKey más de una vez, ya sea por tener varios ParDos que consumen los mismos resultados GroupByKey o por repetir los mismo datos en el código de la canalización, pueden perder algunos datos. Para evitar que este problema te afecte, actualiza a la versión 2.0.0 o posterior del SDK de Cloud Dataflow para Python.

Se agregó compatibilidad de la API de Metrics con el DataflowRunner.

Se agregó la compatibilidad para leer y escribir encabezados en archivos de texto.

Se movieron módulos de IO específicos de GCP al espacio de nombres apache_beam.io.gcp.

Se quitó la etiqueta como un primer argumento opcional para todas las PTransforms. En su lugar, usa label >> PTransform(...).

Se quitó BlockingDataflowPipelineRunner.

Se quitaron DataflowPipelineRunner y DirectPipelineRunner. En su lugar, usa DataflowRunner y DirectRunner.

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

0.5.5 (8 de febrero de 2017)

Esta versión incluye cambios rotundos.

Se agregó la nueva métrica Tiempo total de ejecución a la interfaz de supervisión de Cloud Dataflow.

Se quitaron las API de agregadores. Ten en cuenta que la API de Metrics ofrece una funcionalidad similar.

Se quitó el uso de DoFn no basados en anotaciones.

Se mejoraron varios problemas de estabilidad y rendimiento.

0.5.1 (27 de enero de 2017)

Esta versión incluye cambios rotundos.

Se agregó compatibilidad de la API de Metrics con el DirectRunner.

Se agregaron implementaciones de fuente y receptor para TFRecordsIO.

Se agregó compatibilidad para DoFn basados en anotaciones.

El ajuste de escala automático se habilitará de forma predeterminada para los trabajos que se ejecutan con el servicio de Cloud Dataflow, a menos que el argumento autoscaling_algorithm esté establecido en NONE de manera explícita.

Se renombró PTransform.apply a PTransform.expand.

Se renombró apache_beam.utils.options a apache_beam.utils.pipeline_options.

Se realizaron varios cambios en las opciones de canalización:

  • job_name option ahora es opcional y se establece de forma predeterminada en: beamapp-username-date(mmddhhmmss)-microseconds.
  • temp_location ahora es una opción necesaria.
  • staging_location ahora es opcional y de forma predeterminada tiene el valor: temp_location option.
  • Se quitaron las opciones teardown_policy, disk_source_image, no_save_main_session, pipeline_type_check.
  • Se quitaron las opciones de alias machine_type y disk_type.

Se renombró DataflowPipelineRunner a DataflowRunner.

Se renombró DirectPipelineRunner a DirectRunner.

DirectPipelineRunner ya no ejecuta bloqueos. A fin de proporcionar un bloqueo hasta que se complete la canalización, usa el método wait_until_finish() del objeto PipelineResult, que se muestra desde el método run() del ejecutor para hacer el bloqueo hasta que se complete la canalización.

BlockingDataflowPipelineRunner ahora es obsoleto y se quitará en una versión futura.

0.4.4 (13 de diciembre de 2016)

Se agregó compatibilidad para usar SQL estándar de BigQuery de forma opcional.

Se agregó compatibilidad para mostrar datos.

Se actualizó DirectPipelineRunner para que sea compatible con la ejecución basada en paquetes.

Se renombró la marca --profile a --profile_cpu.

Las entradas laterales de ventanas ahora son compatibles.

Se mejoró la autenticación basada en cuentas de servicio. (Nota: Con la opción de línea de comandos --service_account_key_file se necesita la instalación de pyOpenSSL).

Se mejoraron varios problemas de estabilidad y rendimiento.

0.4.3 (17 de octubre de 2016)

Se arreglaron los requisitos de paquetes.

0.4.2 (28 de septiembre de 2016)

Las instalaciones de esta versión a partir del 14 de octubre de 2016 recogen una versión más nueva de oauth2client que contiene cambios rotundos. Ten en cuenta que el SDK de Cloud Machine Learning Engine no se ve afectado.
Solución alternativa: ejecutar pip install google-cloud-dataflow oauth2client==3.0.0.

Mejoras en el rendimiento y la estabilidad de las operaciones de E/S.

Se corrigieron varios errores menores.

0.4.1 (1 de septiembre de 2016)

Se permite que TopCombineFn tome un argumento de clave en vez de un comparador.

Mejoras a los problemas en el rendimiento y estabilidad en gcsio.

Se mejoraron varios problemas de rendimiento.

0.4.0 (27 de julio de 2016)

Este es el primer lanzamiento en versión Beta y se incluyen cambios rotundos.

Se renombró al paquete google.cloud.dataflow como apache_beam.

Se actualizó la sesión principal para que ya no se guarde de forma predeterminada. Usa la opción de canalización save_main_session para guardar la sesión principal.

Se anunció un marco de trabajo de prueba para fuentes personalizadas.

Se anunció filebasedsource, un módulo nuevo que proporciona un marco de trabajo con el fin de crear fuentes para tipos de archivo nuevos.

Se anunció AvroSource, una fuente nueva que proporciona el SDK que lee archivos Avro.

Se anunció la compatibilidad con la compresión zlib y DEFLATE.

Se anunció la compatibilidad con el operador >> para etiquetas PTransforms.

Se anunció la compatibilidad con la asistencia de estimación de tamaño para los codificadores SDK de Python.

Se mejoraron varios problemas de rendimiento.

Apache Beam™ es una marca registrada de The Apache Software Foundation o sus filiales en Estados Unidos o en otros países.

0.2.7


La versión 0.2.7 incluye los cambios siguientes:

  • Incorpora OperationCounters.should_sample para realizar muestras de estimación de tamaño.
  • Implementa la fragmentación fija en TextFileSink.
  • Usa varios hilos de renombres de archivos en el método finalize_write.
  • Vuelve a intentar las operaciones de E/S idempotentes en el tiempo de espera de Cloud Storage.

0.2.6


La versión 0.2.6 incluye los cambios siguientes:

  • Ahora se permite usar los objetos de canalización en Python con declaraciones.
  • Se corrigieron varios errores, incluso la selección de diccionario por módulos y la saturación del búfer en un OutputStream rápido.

0.2.5


La versión 0.2.5 incluye los cambios siguientes:

  • Se agregó compatibilidad para la creación de fuentes personalizadas y la lectura desde ellas en canalizaciones ejecutadas con DirectRunner y DataflowRunner.
  • Se agregó DiskCachedPipelineRunner como una alternativa de disco de copia de seguridad a DirectRunner.
  • Se modificó cómo se manejan las salidas laterales no declaradas de DoFn en el ejecutor de la nube; ahora se ignoran.
  • Se solucionó el problema de selección cuando se carga el paquete Seaborn.
  • El receptor de salida de archivos de texto ahora puede escribir archivos comprimidos con gzip.

0.2.4


La versión 0.2.4 incluye los cambios siguientes:

  • Se agregó compatibilidad para las entradas laterales iterables de mayor tamaño.
  • Se habilitó la compatibilidad para todos los tipos de contadores compatibles.
  • Se modificó el comportamiento --requirements_file para que los paquetes se almacenen en caché de forma local.
  • Se agregó compatibilidad para TextFileSink no nativo.

0.2.3


La versión 0.2.3 incluye las correcciones siguientes:

  • Ya no se necesita fijar la versión google-apitools.
  • Ya no se necesita fijar la versión oauth2client.
  • Se solucionaron problemas importantes que surgían durante la instalación del paquete de gcloud más actual y del SDK de Cloud Dataflow para la declaración import google.
  • Se arregló el código para que genere las excepciones correctas de los errores en el inicio y en la finalización de los métodos DoFn.

0.2.2


La versión 0.2.2 incluye los cambios siguientes:

  • Se mejoró el alcance de la memoria para DirectPipelineRunner.
  • Se corrigieron múltiples errores:
    • Se arregló el controlador del tipo de campo del esquema BigQuerySink.
    • Se agregaron mensajes de error más claros para los archivos faltantes.
  • Se creó un ejemplo nuevo con esquemas de BigQuery más complejos.
  • Se mejoraron varios problemas de rendimiento por medio de las acciones siguientes:
    • Reducción del registro de depuración
    • Compilación de algunos archivos con Cython

0.2.1


La versión 0.2.1 incluye los siguientes cambios:

  • Rendimiento optimizado para las siguientes funciones:
    • Registro
    • Escritura aleatoria
    • Uso de codificadores
    • Compilación de algunos de los módulos de trabajo con Cython
  • Se modificó el comportamiento predeterminado para la ejecución de Cloud: en lugar de descargar el SDK desde un depósito de Cloud Storage, ahora puedes descargar el SDK como un archivo tarball desde GitHub. Cuando ejecutas trabajos con el servicio de Cloud Dataflow, la versión que usa del SDK coincidirá con la versión que descargaste (en tu entorno local). Puedes usar la opción de canalización --sdk_location para anular este comportamiento y proporcionar una ubicación del tarball explícita (ruta de acceso de Cloud Storage o URL).
  • Se corrigieron varios problemas de selección relacionados con cómo Cloud Dataflow serializa las funciones y los datos del usuario.
  • Se arreglaron varios problemas de caducidad de asignación de tiempo de trabajadores experimentados al momento de procesar conjunto de datos grandes.
  • Se mejoró la validación para detectar varios errores comunes, como problemas de acceso y combinaciones de parámetros no válidas, con mucha más antelación.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

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