Tópico do Pub/Sub para ficheiros de texto no Cloud Storage

O modelo de texto do Pub/Sub para o Cloud Storage é um pipeline de streaming que lê registos do tópico do Pub/Sub e guarda-os como uma série de ficheiros do Cloud Storage no formato de texto. O modelo pode ser usado como uma forma rápida de guardar dados no Pub/Sub para utilização futura. Por predefinição, o modelo gera um novo ficheiro a cada 5 minutos.

Requisitos do pipeline

  • O tópico Pub/Sub tem de existir antes da execução.
  • As mensagens publicadas no tópico têm de estar no formato de texto.
  • As mensagens publicadas no tópico não podem conter novas linhas. Tenha em atenção que cada mensagem do Pub/Sub é guardada como uma única linha no ficheiro de saída.

Parâmetros de modelos

Parâmetros obrigatórios

  • outputDirectory: o caminho e o prefixo do nome de ficheiro para escrever ficheiros de saída. Por exemplo, gs://bucket-name/path/. Este valor tem de terminar com uma barra.
  • outputFilenamePrefix: o prefixo a colocar em cada ficheiro dividido em janelas. Por exemplo, output-. A predefinição é: output.

Parâmetros opcionais

  • inputTopic: o tópico Pub/Sub a partir do qual ler a entrada. O nome do tópico deve estar no formato projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • userTempLocation: o diretório fornecido pelo utilizador para gerar ficheiros temporários. Tem de terminar com uma barra.
  • outputFilenameSuffix: o sufixo a colocar em cada ficheiro dividido em janelas. Normalmente, uma extensão de ficheiro, como .txt ou .csv. 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 Text Files on Cloud Storage template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Opcional: para mudar do processamento exatamente uma vez para o modo de streaming pelo menos uma vez, selecione Pelo menos uma vez.
  8. 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_GCS_Text \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=output-,\
outputFilenameSuffix=.txt

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 seu tópico do Pub/Sub
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage

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_GCS_Text
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
    },
   "parameters": {
       "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME"
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "outputFilenamePrefix": "output-",
       "outputFilenameSuffix": ".txt",
   }
}

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 seu tópico do Pub/Sub
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage

O que se segue?