Modelo do Pub/Sub para ficheiros Avro no Cloud Storage

O modelo Pub/Sub para ficheiros Avro no Cloud Storage é um pipeline de streaming que lê dados de um tópico do Pub/Sub e escreve ficheiros Avro no contentor do Cloud Storage especificado.

Requisitos do pipeline

  • O tópico Pub/Sub de entrada tem de existir antes da execução do pipeline.

Parâmetros de modelos

Parâmetros obrigatórios

  • inputTopic: o tópico do Pub/Sub ao qual subscrever para o consumo de mensagens. O nome do tópico tem de estar no formato projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • outputDirectory: o diretório de saída onde os ficheiros Avro de saída são arquivados. Tem de conter / no final. Por exemplo: gs://example-bucket/example-directory/.
  • avroTempDirectory: o diretório para ficheiros Avro temporários. Tem de conter / no final. Por exemplo: gs://example-bucket/example-directory/.

Parâmetros opcionais

  • outputFilenamePrefix: o prefixo do nome do ficheiro de saída para os ficheiros Avro. A predefinição é: output.
  • outputFilenameSuffix: o sufixo do nome do ficheiro de saída para os ficheiros Avro. A predefinição é vazio.
  • outputShardTemplate: o modelo de fragmento define a parte dinâmica de cada ficheiro dividido em janelas. Por predefinição, o pipeline usa um único fragmento para a saída para o sistema de ficheiros em cada janela. Por conseguinte, todos os dados são enviados para um único ficheiro por janela. O valor predefinido é outputShardTemplate, onde to W-P-SS-of-NN é o intervalo de datas da janela, P são as informações do painel, S é o número de fragmentos e N é o número de fragmentos.W No caso de um único ficheiro, a parte SS-of-NN do outputShardTemplate é 00-of-01.
  • yearPattern: padrão para formatar o ano. Tem de ser um ou mais de y ou Y. A caixa não faz diferença no ano. Opcionalmente, envolva o padrão com carateres que não sejam alfanuméricos ou o caráter de diretório (/). A predefinição é YYYY.
  • monthPattern: padrão para formatar o mês. Tem de ser um ou mais carateres M. Opcionalmente, envolva o padrão com carateres que não sejam alfanuméricos ou o caráter de diretório (/). A predefinição é MM.
  • dayPattern: padrão para formatar o dia. Tem de ser um ou mais dos seguintes valores: d para o dia do mês ou D para o dia do ano. Opcionalmente, envolva o padrão com carateres que não sejam alfanuméricos ou o caráter de diretório (/). A predefinição é dd.
  • hourPattern: padrão para formatar a hora. Tem de ser um ou mais carateres H. Opcionalmente, envolva o padrão com carateres que não sejam alfanuméricos ou o caráter de diretório (/). A predefinição é HH.
  • minutePattern: padrão para formatar o minuto. Tem de ser um ou mais carateres m. Opcionalmente, envolva o padrão com carateres que não sejam alfanuméricos ou o caráter de diretório (/). A predefinição é mm.

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 to Avro Files on Cloud Storage 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 jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_PubSub_to_Avro \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=FILENAME_PREFIX,\
outputFilenameSuffix=FILENAME_SUFFIX,\
outputShardTemplate=SHARD_TEMPLATE,\
avroTempDirectory=gs://BUCKET_NAME/temp/

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:

  • STAGING_LOCATION: a localização para organizar ficheiros locais (por exemplo, gs://your-bucket/staging)
  • TOPIC_NAME: o nome do tópico do Pub/Sub
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage
  • FILENAME_PREFIX: o prefixo do nome do ficheiro de saída preferido
  • FILENAME_SUFFIX: o sufixo do nome do ficheiro de saída preferido
  • SHARD_TEMPLATE: o modelo de fragmento de saída preferido

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/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_PubSub_to_Avro
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
    },
   "parameters": {
       "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME",
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "avroTempDirectory": "gs://BUCKET_NAME/temp/",
       "outputFilenamePrefix": "FILENAME_PREFIX",
       "outputFilenameSuffix": "FILENAME_SUFFIX",
       "outputShardTemplate": "SHARD_TEMPLATE"
   }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • 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:

  • STAGING_LOCATION: a localização para organizar ficheiros locais (por exemplo, gs://your-bucket/staging)
  • TOPIC_NAME: o nome do tópico do Pub/Sub
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage
  • FILENAME_PREFIX: o prefixo do nome do ficheiro de saída preferido
  • FILENAME_SUFFIX: o sufixo do nome do ficheiro de saída preferido
  • SHARD_TEMPLATE: o modelo de fragmento de saída preferido

O que se segue?