O processamento de dados no Dataflow pode ser carregado em paralelo. Grande parte desse paralelismo é processado automaticamente pelo Dataflow. Os conectores de E/S ficam no limite entre o pipeline e outras partes da arquitetura, como armazenamento de arquivos, bancos de dados e sistemas de mensagens. Assim, os conectores de E/S geralmente têm considerações específicas para alcançar o paralelismo.
Práticas recomendadas gerais
A lista a seguir descreve as práticas recomendadas gerais para usar conectores de E/S no Dataflow.
Leia a documentação do Javadoc, Pydoc ou Go para os conectores no pipeline. Para mais informações, confira Conectores de E/S na documentação do Apache Beam.
Use a versão mais recente do SDK do Apache Beam. Os conectores de E/S são continuamente aprimorados, com adição de recursos e correção de problemas conhecidos.
Ao desenvolver um pipeline, é importante equilibrar o paralelismo do job. Se um job tiver pouco paralelismo, ele pode ficar lento e os dados podem se acumular na origem. No entanto, o excesso de paralelismo pode sobrecarregar o coletor com muitas solicitações.
Não dependa da ordem dos elementos. Em geral, o Dataflow não garante a ordem dos elementos em uma coleção.
Se o seu SKD não tiver um conector de E/S disponível, use o framework entre linguagens para usar um conector de E/S de outro SDK. Além disso, os conectores nem sempre têm paridade de recursos entre SDKs. Se um conector de outro SDK fornecer um recurso necessário, você poderá usá-lo como uma transformação entre linguagens.
Em geral, criar conectores de E/S personalizados é um desafio. Use um conector existente sempre que possível. Se você precisar implementar um conector de E/S personalizado, confira Como desenvolver um novo conector de E/S.
Se um pipeline falhar, verifique se há erros registrados pelos conectores de E/S. Confira Resolver erros do Dataflow.
Ao realizar gravações do Dataflow em um conector, use um ErrorHandler para processar gravações com falha ou leituras com formato incorreto. Esse tipo de processamento de erros é compatível com as seguintes E/S Java nas versões 2.55.0 e mais recentes do Apache Beam: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO e AvroIO.
Práticas recomendadas para conectores de E/S individuais
Os tópicos a seguir listam as práticas recomendadas para conectores de E/S individuais:
Conector de E/S | Ler | Gravação |
---|---|---|
Apache Iceberg | Ler no Apache Iceberg | Gravar no Apache Iceberg |
BigQuery | Ler pelo BigQuery | gravar no BigQuery |
Bigtable | Ler do Bigtable | Gravar para o Bigtable |
Cloud Storage | Ler do Cloud Storage | Gravar no Cloud Storage |
Pub/Sub | Ler do Pub/Sub | Gravar no Pub/Sub |
Conectores de E/S compatíveis com o Google
A tabela a seguir lista os conectores de E/S do Apache Beam compatíveis com o Dataflow. Para conferir uma lista completa de conectores de E/S do Apache Beam, incluindo aqueles desenvolvidos pela comunidade do Apache Beam e aceitos por outros executores, consulte Conectores de E/S na documentação do Apache Beam.
Nome do conector de E/S | Java | Python | Go |
---|---|---|---|
AvroIO | Compatível | Compatível | Compatível |
BigQueryIO | Compatível | Compatível | Compatível |
BigTableIO | Compatível | Coletor compatível | Coletor compatível |
DatastoreIO | Compatível | Compatível | Compatível |
FhirIO (saúde) | Compatível | Indisponível | Compatível |
FileIO | Compatível | Compatível | Compatível |
GcsFileSystem | Compatível | Compatível | Compatível |
JdbcIO | Compatível | Suporte a vários idiomas | Suporte a vários idiomas |
KafkaIO | Compatível | Suporte a vários idiomas | Suporte a vários idiomas |
LocalFileSystem | Compatível | Compatível | Compatível |
ParquetIO | Compatível | Compatível | Compatível |
PubSubIO | Compatível | Compatível | Compatível |
SpannerIO | Compatível | Suporte a vários idiomas | Compatível |
TextIO | Compatível | Compatível | Compatível |
TFRecordIO | Compatível | Compatível | Indisponível |
A seguir
- Leia a documentação do Apache Beam para saber mais sobre conectores de E/S.