Conector Flink Bigtable
O Apache Flink é um framework de processamento de fluxos que permite manipular dados em tempo real. Se você tiver uma tabela do Bigtable, use um conector do Flink Bigtable para transmitir, serializar e gravar dados da fonte especificada no Bigtable. Com o conector, é possível fazer o seguinte usando a API Table do Apache Flink ou a API Datastream:
- Criar um pipeline
- Serializar os valores da sua fonte de dados em entradas de mutação do Bigtable
- Grave essas entradas na sua tabela do Bigtable.
Este documento descreve o conector do Flink Bigtable e o que você precisa saber antes de usá-lo. Antes de ler este documento, familiarize-se com o Apache Flink, o modelo de armazenamento do Bigtable e gravações do Bigtable.
Para usar o conector, é necessário ter uma tabela do Bigtable preexistente que sirva como um coletor de dados. É preciso criar os grupos de colunas da tabela antes de iniciar o pipeline. Eles não podem ser criados na gravação. Para mais informações, consulte Criar e gerenciar tabelas.
O conector é compatível com a versão 2.1.0 do Apache Flink e está disponível no GitHub. Para informações sobre como instalar o conector, consulte o repositório Flink Bigtable Connector. Para exemplos de código que demonstram como usar o conector, consulte o diretório flink-examples-gcp-bigtable.
Serializadores
O conector do Flink tem três serializadores integrados que podem ser usados para converter dados em entradas de mutação do Bigtable:
GenericRecordToRowMutationSerializer: para objetosGenericRecorddo AVRORowDataToRowMutationSerializer: para objetosRowDatado Flink.FunctionRowMutationSerializer: para lógica de serialização personalizada usando uma função fornecida
Você também pode criar seu próprio serializador personalizado herdando de
BaseRowMutationSerializer.
Modos de serialização
Ao usar o conector do Flink, você escolhe um de dois modos de serialização. O modo especifica como os dados de origem são serializados em entradas de mutação que são gravadas em grupos de colunas na tabela do Bigtable. Use um dos modos.
Modo de grupo de colunas
No modo de grupo de colunas, todos os dados são gravados em um único grupo especificado. Campos aninhados não são compatíveis.
Modo de linhas aninhadas
No modo de linhas aninhadas, cada campo de nível superior representa um grupo de colunas. O valor do campo de nível superior (RowKeyField) é outro campo. O valor desse campo tem um objeto de linha para cada coluna no grupo de colunas do Bigtable. No modo de linhas aninhadas, todos os campos, exceto o de nível superior, precisam ser objetos de linha. Não é possível usar linhas aninhadas duas vezes.
Opções de configuração
Para configurar o desempenho e o comportamento do conector, use várias opções. Para mais informações sobre essas opções, consulte a documentação do conector no GitHub.
Processamento único
No Apache Flink, exatamente uma vez significa que cada registro de dados em um stream é processado exatamente uma vez, evitando qualquer processamento duplicado ou perda de dados, mesmo em caso de falhas no sistema.
Uma mutação mutateRow do Bigtable é idempotente por padrão. Portanto, uma solicitação de gravação com a mesma chave de linha, grupo de colunas, coluna, carimbo de data/hora e valor não cria uma nova célula, mesmo que seja repetida. Quando você
usa o Bigtable como o coletor de dados para um framework Apache Flink, você
recebe o comportamento de execução única exata automaticamente, desde que as seguintes condições sejam
atendidas:
- Não defina o carimbo de data/hora para usar o carimbo de data/hora do lado do servidor (
-1) em novas tentativas. - O restante do pipeline atende aos requisitos de execução exatamente uma vez.
Para mais informações sobre a semântica de entrega única, consulte Uma visão geral do processamento de entrega única de ponta a ponta no Apache Flink.
A seguir
- Conector Bigtable Beam
- Conector de gravador do Bigtable Kafka Connect
- Integrações com o Bigtable
- Referência da API Datastream