Práticas recomendadas para o conetor de E/S do Apache Beam

O processamento de dados no Dataflow pode ser altamente paralelizado. Grande parte deste paralelismo é processada automaticamente pelo Dataflow. Os conetores de E/S encontram-se no limite entre o pipeline e outras partes da sua arquitetura, como o armazenamento de ficheiros, as bases de dados e os sistemas de mensagens. Como tal, os conetores de E/S têm frequentemente considerações específicas para alcançar o paralelismo.

Práticas recomendadas gerais

A lista seguinte descreve as práticas recomendadas gerais para usar conetores de E/S no Dataflow.

  • Leia a documentação Javadoc, Pydoc ou Go para os conetores no seu pipeline. Para mais informações, consulte a secção Conetores de E/S na documentação do Apache Beam.

  • Use a versão mais recente do SDK do Apache Beam. Os conetores de E/S estão a ser melhorados continuamente, adicionando funcionalidades e corrigindo problemas conhecidos.

  • Ao desenvolver um pipeline, é importante equilibrar o paralelismo da tarefa. Se uma tarefa tiver um paralelismo demasiado baixo, pode ser lenta e os dados podem acumular-se na origem. No entanto, um paralelismo excessivo pode sobrecarregar um destino com demasiados pedidos.

  • Não dependa da ordem dos elementos. Em geral, o Dataflow não garante a ordem dos elementos numa coleção.

  • Se um conetor de E/S não estiver disponível no seu SDK preferencial, considere usar a estrutura multilíngue para usar um conetor de E/S de outro SDK. Além disso, os conetores nem sempre têm paridade de funcionalidades entre os SDKs. Se um conector de outro SDK fornecer uma funcionalidade de que precisa, pode usá-lo como uma transformação entre idiomas.

  • Em geral, escrever conetores de E/S personalizados é um desafio. Use um conetor existente sempre que possível. Se precisar de implementar um conetor de E/S personalizado, leia Desenvolver um novo conetor de E/S.

  • Se um pipeline falhar, verifique se existem erros registados pelos conetores de E/S. Consulte o artigo Resolva problemas de erros do Dataflow.

  • Quando realizar escritas do Dataflow para um conector, considere usar um ErrorHandler para processar quaisquer escritas com falhas ou leituras com erros de formatação. Este tipo de processamento de erros é suportado para as seguintes E/S Java nas versões 2.55.0 e posteriores do Apache Beam: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO e AvroIO.

Práticas recomendadas para conectores de E/S individuais

Os tópicos seguintes apresentam práticas recomendadas para conectores de E/S individuais:

Conetor de E/SLeituraEscrita
Apache Iceberg Leia a partir do Apache Iceberg Escreva no Apache Iceberg
Apache Kafka Leia a partir do Apache Kafka Escreva no Apache Kafka
BigQuery Leia a partir do BigQuery Escreva no BigQuery
Bigtable Leia a partir do Bigtable Escrever no Bigtable
Cloud Storage Ler a partir do Cloud Storage Escrever no Cloud Storage
Pub/Sub Ler a partir do Pub/Sub Escrever no Pub/Sub

Conetores de E/S suportados pela Google

A tabela seguinte indica os conetores de E/S do Apache Beam suportados pelo Dataflow. Para ver uma lista completa dos conetores de E/S do Apache Beam, incluindo os desenvolvidos pela comunidade do Apache Beam e suportados por outros executores, consulte Conetores de E/S na documentação do Apache Beam.

Nome do conetor de E/S Java Python Go
AvroIO Suportado Suportado Suportado
BigQueryIO Suportado Suportado Suportado
BigTableIO Suportado Lavatório suportado Lavatório suportado
DatastoreIO Suportado Suportado Suportado
FhirIO (cuidados de saúde) Suportado Não disponível Suportado
FileIO Suportado Suportado Suportado
GcsFileSystem Suportado Suportado Suportado
JdbcIO Suportado Compatibilidade com vários idiomas Compatibilidade com vários idiomas
KafkaIO Suportado Compatibilidade com vários idiomas Compatibilidade com vários idiomas
LocalFileSystem Suportado Suportado Suportado
ParquetIO Suportado Suportado Suportado
PubSubIO Suportado Suportado Suportado
SpannerIO Suportado Compatibilidade com vários idiomas Suportado
TextIO Suportado Suportado Suportado
TFRecordIO Suportado Suportado Não disponível

O que se segue?