Notas da versão: SDK 2.x do Cloud Dataflow para Java

OBSERVAÇÃO: a página de downloads do Apache Beam contém notas das versões do SDK do Apache Beam.

OBSERVAÇÃO: as versões do SDK do Cloud Dataflow 2.x apresentam várias alterações significativas em relação à série 1.x de lançamentos. Consulte as mudanças no guia de migração 1.x para 2.x.

Em janeiro de 2016, foi anunciada pelo Google a doação dos SDKs do Cloud Dataflow para a Apache Software Foundation, como parte do projeto Apache Beam. Os SDKs do Cloud Dataflow agora são baseados no Apache Beam.

O SDK 2.0.0 do Cloud Dataflow para Java é a primeira versão 2.x estável e baseada em um subconjunto da base de código do Apache Beam. Para informações sobre a versão 1.x do SDK para Java do Cloud Dataflow, consulte as notas da versão do SDK 1.x para Java do Dataflow.

A página de status de suporte da versão do SDK contém informações sobre o status de suporte de cada versão do SDK do Cloud Dataflow.

Para instalar e usar o SDK do Cloud Dataflow, consulte o guia de instalação do SDK do Cloud Dataflow.

Aviso para usuários que estão fazendo o upgrade do SDK 1.x para Java do Cloud Dataflow:
Esta é uma nova versão principal e, portanto, vem acompanhada de algumas ressalvas.
* Grandes mudanças: o SDK 2.x para Java do Cloud Dataflow apresenta várias mudanças significativas desde a série de versões 1.x. Veja os detalhes a seguir.
* Incompatibilidade de atualização: a atualização do SDK 2.x para Java do Cloud Dataflow é incompatível com a versão 1.x. Os jobs de streaming que usam o SDK 1.x do Cloud Dataflow não podem ser atualizados para usar a versão 2.x do SDK. Os canais 2.x do Cloud Dataflow só podem ser atualizados em versões a partir do SDK 2.0.0.

Conteúdo da distribuição do SDK do Cloud Dataflow

A distribuição do SDK do Cloud Dataflow contém um subconjunto do ecossistema Apache Beam. Esse subconjunto inclui os componentes necessários para definir seu pipeline e executá-lo localmente e no serviço Cloud Dataflow, como:

  • o SDK do núcleo;
  • DirectRunner e DataflowRunner;
  • componentes de E/S para outros serviços do Google Cloud Platform;
  • Apache Kafka.

A distribuição do SDK do Cloud Dataflow não inclui outros componentes do Beam, como:

  • executores para outros mecanismos de processamento distribuído (como Apache Spark ou Apache Flink);
  • componentes de E/S para serviços que não sejam do Cloud Platform (como Apache Kafka).

Se seu caso de uso requer algum componente que não esteja incluído, é possível usar os módulos Apache Beam apropriados diretamente e ainda executar seu canal no serviço Cloud Dataflow.

Notas da versão

Esta seção fornece as alterações mais relevantes de cada versão para os clientes do Cloud Dataflow.

A página de downloads do Apache Beam contém notas das versões do SDK do Apache Beam.

17 de dezembro de 2018

As seguintes versões do SDK serão desativadas em 25 de março de 2019 devido à interrupção do suporte para endpoints de lote JSON-RPC e HTTP global. Pouco depois dessa data, não será mais possível enviar novos jobs do Cloud Dataflow nem atualizar jobs desse tipo em execução que usam os SDKs desativados. Além disso, os jobs de streaming atuais que usam essas versões dos SDKs poderão apresentar falhas.

  • SDK do Apache Beam para Java, versões de 2.0.0 a 2.4.0 (inclusive)
  • SDK do Apache Beam para Python, versões de 2.0.0 a 2.4.0 (inclusive)
  • SDK do Cloud Dataflow para Java, versões de 2.0.0 a 2.4.0 (inclusive)
  • SDK do Cloud Dataflow para Python, versões de 2.0.0 a 2.4.0 (inclusive)

Consulte a página de status de suporte da versão do SDK para ver detalhes sobre o status do suporte ao SDK.

2.5.0 (27 de junho de 2018)

AVISO DE SUSPENSÃO DE USO FUTURO: esta versão do SDK 2.5.0 do Cloud Dataflow é a última versão do SDK para Java separada das versões de SDK do Apache Beam.

A versão 2.5.0 é baseada em um subconjunto do Apache Beam 2.5.0. Para ver mais informações sobre o que mudou, consulte o anúncio de lançamento do Apache Beam 2.5.0.

Inclusão do KafkaIO como parte do SDK do Cloud Dataflow.

Permissão que o BigQueryIO use um projeto diferente para carregar jobs no modo em lote.

Inclusão da capacidade de desativar a API em lote no SpannerIO.

Opção adicionada para fornecer ao BigQueryIO um método para indicar a prioridade: INTERACTIVE ou BATCH.

Correção de travamento do DirectRunner, se vários temporizadores forem definidos no mesmo pacote.

Melhoria em várias questões relativas a estabilidade, desempenho e documentação.

2.4.0 (30 de março de 2018)

A versão 2.4.0 é baseada em um subconjunto do Apache Beam 2.4.0. Para ver mais informações sobre o que mudou, consulte o anúncio de lançamento do Apache Beam 2.4.0.

Inclusão da nova transformação Wait.on() que permite o sequenciamento geral de transformações. Wait.on() é utilizável com canais em lote e streaming.

Maior escalonabilidade na observação de novos arquivos com transformações de E/S, como TextIO.read().watchForNewFiles(). Os testes leem com sucesso até um milhão de arquivos.

BigQueryIO.write() agora é compatível com o particionamento baseado em colunas, que permite o carregamento mais barato e mais rápido de dados históricos em uma tabela particionada por tempo. O particionamento baseado em colunas usa um total de jobs de carregamento, em vez de um job de carregamento por partição.

SpannerIO atualizado para usar a API BatchQuery do Cloud Spanner. A documentação do Cloud Spanner contém mais informações sobre como usar o conector do Cloud Dataflow.

Contêineres atualizados do Cloud Dataflow para compatibilidade com a política ilimitada do Java Cryptography Extension (JCE).

Remoção do método WindowedValue.valueInEmptyWindows() obsoleto.

Correção de um problema de descarte de dados prematuro com ApproximateUnique.

Melhoria em várias questões relativas a estabilidade, desempenho e documentação.

2.3.0 (28 de fevereiro de 2018)

A versão 2.3.0 é baseada em um subconjunto do Apache Beam 2.3.0. Para ver mais informações sobre o que mudou, consulte o anúncio de lançamento do Apache Beam 2.3.0.

Suporte interrompido para o Java 7.

Adição de suporte a modelos (parâmetros ValueProvider) ao BigtableIO.

Adicionada nova API fluente de propósito geral para gravação em arquivos: FileIO.write() e FileIO.writeDynamic(). As APIs DynamicDestinations no TextIO e AvroIO estão obsoletas.

MapElements e FlatMapElements agora são compatíveis com entradas secundárias.

Correção de problemas no BigQueryIO ao gravar em tabelas com decoradores de partições.

2.2.0 (8 de dezembro de 2017)

A versão 2.2.0 é baseada em um subconjunto do Apache Beam 2.2.0. Consulte as notas da versão do Apache Beam 2.2.0 para mais informações sobre o que mudou.

Problemas

Problema conhecido: quando executadas no modo de lote, as métricas do medidor não são informadas.

Problema conhecido: não incluímos compatibilidade com SQL nessa versão porque ela é experimental e não foi testada no Cloud Dataflow. Não recomendamos usar o SQL.

Atualizações e melhorias

Recurso adicionado para definir rótulos de jobs em DataflowPipelineOptions.

Compatibilidade adicionada para leitura de GenericRecords do tipo Avro com BigQueryIO.

Compatibilidade adicionada para separadores personalizados de vários bytes em TextIO.

Compatibilidade adicionada para inspeção de novos arquivos (TextIO.watchForNewFiles) em TextIO.

Compatibilidade adicionada para leitura de uma PCollection de nomes de arquivos (ReadAll) em TextIO e AvroIO.

Compatibilidade adicionada para desabilitar a validação em BigtableIO.write().

Compatibilidade adicionada para usar o método setTimePartitioning em BigQueryIO.write().

Melhoria em várias questões relativas a estabilidade, desempenho e documentação.

2.1.0 (1º de setembro de 2017)

A versão 2.1.0 é baseada em um subconjunto do Apache Beam 2.1.0. Consulte as notas da versão do Apache Beam 2.1.0 para mais informações sobre o que mudou.

Problemas

Problema conhecido: quando executadas no modo de lote, as métricas do medidor não são informadas.

Atualizações e melhorias

Detecção adicionada para código potencialmente travado, o que resulta em entradas de registro de Processing lulls.

Compatibilidade de métricas adicionada para DataflowRunner no modo de streaming.

Inclusão de OnTimeBehavior em WindowinStrategy para controlar a emissão de painéis ON_TIME.

Política de nome de arquivo padrão adicionada para o arquivo em janela FileBasedSinks que processa entrada em janela.

Correção de um problema em que os temporizadores de tempo de processamento para janelas expiradas eram ignorados.

Correção de um problema em que o DatastoreIO não conseguia avançar quando o Datastore apresentava lentidão na resposta.

Correção de um problema em que os arquivos bzip2 estavam sendo lidos parcialmente. Inclusão de suporte para arquivos bzip2 concatenados.

Melhoria em várias questões relativas a estabilidade, desempenho e documentação.

2.0.0 (23 de maio de 2017)

A versão 2.0.0 é baseada em um subconjunto do Apache Beam 2.0.0. Consulte as notas da versão do Apache Beam 2.0.0 para mais informações sobre o que mudou.

Problemas

Problema identificado: quando executadas no modo de streaming, as métricas não são informadas na IU do Cloud Dataflow.

Problema identificado: quando executadas no modo de lote, as métricas do medidor não são informadas.

Atualizações e melhorias

Compatibilidade adicionada para usar a Interface do Stackdriver Error Reporting.

Inclusão de uma nova API no BigQueryIO para gravar em várias tabelas com base em dados, possivelmente com esquemas diferentes. Consulte BigQueryIO.Write.to(SerializableFunction) e BigQueryIO.Write.to(DynamicDestinations).

Inclusão de uma nova API para gravar coleções ilimitadas e em janela em TextIO e AvroIO. Por exemplo, consulte TextIO.Write.withWindowedWrites() e TextIO.Write.withFilenamePolicy(FilenamePolicy).

Inclusão de TFRecordIO para leitura e gravação de arquivos TFRecord do TensorFlow.

Recurso adicionado para registrar automaticamente CoderProviders no CoderRegistry padrão. CoderProviders são registrados por um ServiceLoader por meio de implementações concretas de um CoderProviderRegistrar.

Inclusão de um requisito adicional da API do Google. Agora você também precisa ativar a Cloud Resource Manager API.

Alteração da ordem dos parâmetros para ParDo com entradas e saídas laterais.

Alteração da ordem dos parâmetros para transformações de MapElements e FlatMapElements ao especificar um tipo de saída.

Alteração do padrão para ler e gravar tipos personalizados para PubsubIO e KafkaIO.

Alteração da sintaxe para leitura e gravação de TextIO, AvroIO, TFRecordIO, KinesisIO e BigQueryIO.

Alteração da sintaxe para configurar parâmetros de janela diferentes do próprio WindowFn usando a transformação Window.

Consolidação de XmlSource e XmlSink em XmlIO.

Renomeação de CountingInput como GenerateSequence e unificação da sintaxe para produzir sequências limitadas e ilimitadas.

Renomeação de BoundedSource#splitIntoBundles como #split.

Renomeação de UnboundedSource#generateInitialSplits como #split.

A saída de @StartBundle não é mais possível. Em vez de aceitar um parâmetro de tipo Context, esse método pode aceitar opcionalmente um argumento do tipo StartBundleContext para acessar PipelineOptions.

A saída de @FinishBundle agora requer sempre uma janela e um carimbo de data/hora explícitos. Em vez de aceitar um parâmetro de tipo Context, esse método pode aceitar opcionalmente um argumento do tipo FinishBundleContext para acessar PipelineOptions e emitir saída para a janela específica.

XmlIO não faz mais parte do núcleo do SDK. Ele precisa ser adicionado manualmente usando o novo pacote xml-io.

Substituição da Aggregator API pela nova Metrics API para criar métricas/contadores definidos pelo usuário.


Observação: todas as versões 2.0.0-beta estão OBSOLETAS.

2.0.0-beta3 (17 de março de 2017)

A versão 2.0.0-beta3 se baseia em um subconjunto do Apache Beam 0.6.0.

Alteração de TextIO para operar apenas em strings.

Alteração de KafkaIO para especificar explicitamente os parâmetros do tipo.

Renomeação das funções de fábrica como ToString.

Alteração das transformações de Count, Latest, Sample e SortValues.

Renomeação de Write.Bound para Write.

Renomeação das classes de transformação Flatten.

Divisão do método GroupByKey.create nos métodos create e createWithFewKeys.

2.0.0-beta2 (2 de fevereiro de 2017)

A versão 2.0.0-beta2 se baseia em um subconjunto do Apache Beam 0.5.0.

Inclusão da funcionalidade PubsubIO para que as transformações Read e Write forneçam acesso aos atributos de mensagens do Cloud Pub/Sub.

Adição de suporte a pipelines com estado por meio da nova API de estado.

Inclusão de compatibilidade com temporizadores por meio da nova API Timer. Isso se limita ao DirectRunner nesta versão.

2.0.0-beta1 (7 de janeiro de 2017)

A versão 2.0.0-beta1 se baseia em um subconjunto do Apache Beam 0.4.0.

Compactação aprimorada: CompressedSource oferece suporte à leitura de arquivos compactados ZIP. TextIO.Write e AvroIO.Write oferecem suporte à saída compactada.

Inclusão de funcionalidade a AvroIO: Write aceita a inclusão de metadados de usuário personalizados.

Inclusão de funcionalidade a BigQueryIO: Write divide as importações grandes em massa (> 12 TiB) em vários jobs de carga para poder processar conjuntos de dados muito grandes do BigQuery.

Inclusão de funcionalidade a BigtableIO: Write oferece suporte a PCollections ilimitadas e pode ser usado no modo de streaming no DataflowRunner.

Para ver todos os detalhes, consulte as notas da versão do Apache Beam 0.3.0-incubating, 0.4.0 e 0.5.0.

Outros módulos do Apache Beam da versão correspondente podem ser usados com essa distribuição, incluindo conectores de E/S adicionais como Java Message Service (JMS), Apache Kafka, Java Database Connectivity (JDBC), MongoDB e Amazon Kinesis. Acesse o site do Apache Beam para mais detalhes.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.