Modelo do Pub/Sub Avro para o BigQuery

O modelo Pub/Sub Avro para BigQuery é um pipeline de streaming que carrega dados Avro de uma subscrição do Pub/Sub para uma tabela do BigQuery. Todos os erros que ocorrem durante a escrita na tabela do BigQuery são transmitidos para um tópico não processado do Pub/Sub.

Antes de executar um pipeline do Dataflow para este cenário, considere se uma subscrição do Pub/Sub BigQuery com uma UDF cumpre os seus requisitos.

Requisitos do pipeline

  • A subscrição do Pub/Sub de entrada tem de existir.
  • O ficheiro de esquema dos registos Avro tem de existir no Cloud Storage.
  • O tópico Pub/Sub não processado tem de existir.
  • O conjunto de dados do BigQuery de saída tem de existir.

Parâmetros de modelos

Parâmetros obrigatórios

  • schemaPath: a localização do Cloud Storage do ficheiro de esquema Avro. Por exemplo, gs://path/to/my/schema.avsc.
  • inputSubscription: a subscrição de entrada do Pub/Sub a partir da qual ler. Por exemplo, projects/<PROJECT_ID>/subscription/<SUBSCRIPTION_ID>.
  • outputTableSpec: a localização da tabela de resultados do BigQuery na qual escrever os resultados. Por exemplo, <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.Consoante o createDisposition especificado, a tabela de saída pode ser criada automaticamente através do esquema Avro fornecido pelo utilizador.
  • outputTopic: o tópico do Pub/Sub a usar para registos não processados. Por exemplo, projects/<PROJECT_ID>/topics/<TOPIC_NAME>.

Parâmetros opcionais

Execute o modelo

Consola

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. Opcional: para Ponto final regional, selecione um valor no menu pendente. A região predefinida é us-central1.

    Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.

  5. No menu pendente Modelo do fluxo de dados, selecione the Pub/Sub Avro to BigQuery template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Clique em Executar tarefa.

gcloud

Na shell ou no terminal, execute o modelo:

gcloud dataflow flex-template run JOB_NAME \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/PubSub_Avro_to_BigQuery \
    --parameters \
schemaPath=SCHEMA_PATH,\
inputSubscription=SUBSCRIPTION_NAME,\
outputTableSpec=BIGQUERY_TABLE,\
outputTopic=DEADLETTER_TOPIC
  

Substitua o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • SCHEMA_PATH: o caminho do Cloud Storage para o ficheiro de esquema Avro (por exemplo, gs://MyBucket/file.avsc)
  • SUBSCRIPTION_NAME: o nome da subscrição de entrada do Pub/Sub
  • BIGQUERY_TABLE: o nome da tabela de saída do BigQuery
  • DEADLETTER_TOPIC: o tópico do Pub/Sub a usar para a fila não processada

API

Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos de autorização, consulte projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/PubSub_Avro_to_BigQuery",
      "parameters": {
          "schemaPath": "SCHEMA_PATH",
          "inputSubscription": "SUBSCRIPTION_NAME",
          "outputTableSpec": "BIGQUERY_TABLE",
          "outputTopic": "DEADLETTER_TOPIC"
      }
   }
}
  

Substitua o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • SCHEMA_PATH: o caminho do Cloud Storage para o ficheiro de esquema Avro (por exemplo, gs://MyBucket/file.avsc)
  • SUBSCRIPTION_NAME: o nome da subscrição de entrada do Pub/Sub
  • BIGQUERY_TABLE: o nome da tabela de saída do BigQuery
  • DEADLETTER_TOPIC: o tópico do Pub/Sub a usar para a fila não processada

O que se segue?