Esta página documenta várias opções de configuração do modelo flexível do Dataflow, incluindo:
- Autorizações
- Variáveis de ambiente do Dockerfile
- Dependências de pacotes para Python
- Imagens de Docker
- Opções de pipeline
- Localizações temporárias e de preparação
Para configurar um exemplo de modelo flexível, consulte o tutorial do modelo flexível.
Compreenda as autorizações de modelos flexíveis
Quando trabalha com modelos flexíveis, precisa de três conjuntos de autorizações:
- Autorizações para criar recursos
- Autorizações para criar um modelo flexível
- Autorizações para executar um modelo flexível
Autorizações para criar recursos
Para desenvolver e executar um pipeline de modelo flexível, tem de criar vários recursos (por exemplo, um contentor de preparação). Para tarefas de criação de recursos únicas, pode usar a função de proprietário básica.
Autorizações para criar um modelo flexível
Enquanto programador de um modelo flexível, tem de criar o modelo para o disponibilizar aos utilizadores. A criação envolve o carregamento de uma especificação de modelo para um contentor do Cloud Storage e o aprovisionamento de uma imagem Docker com o código e as dependências necessárias para executar o pipeline. Para criar um modelo flexível, precisa de acesso de leitura e gravação ao Cloud Storage e acesso de gravação do Artifact Registry ao seu repositório do Artifact Registry. Pode conceder estas autorizações atribuindo as seguintes funções:
- Administrador de armazenamento (
roles/storage.admin
) - Editor do Cloud Build (
roles/cloudbuild.builds.editor
) - Escritor do Artifact Registry (
roles/artifactregistry.writer
)
Autorizações para executar um modelo flexível
Quando executa um modelo flexível, o Dataflow cria uma tarefa para si. Para criar a tarefa, a conta de serviço do Dataflow precisa da seguinte autorização:
dataflow.serviceAgent
Quando usa o Dataflow pela primeira vez, o serviço atribui-lhe esta função, pelo que não precisa de conceder esta autorização.
Por predefinição, a conta de serviço do Compute Engine é usada para VMs iniciadoras e VMs de trabalho. A conta de serviço precisa das seguintes funções e capacidades:
- Administrador de objetos de armazenamento (
roles/storage.objectAdmin
) - Leitor (
roles/viewer
) - Trabalhador do Dataflow (
roles/dataflow.worker
) - Acesso de leitura e escrita ao contentor de preparação
- Acesso de leitura à imagem do modelo flexível
Para conceder acesso de leitura e escrita ao contentor de preparação, pode usar a função
Storage Object Admin (roles/storage.objectAdmin
). Para mais informações,
consulte o artigo Funções de IAM para o Cloud Storage.
Para conceder acesso de leitura à imagem do modelo flexível, pode usar a função Storage Object Viewer (roles/storage.objectViewer
). Para mais informações, consulte Configurar o controlo de acesso.
Defina as variáveis de ambiente do Dockerfile necessárias
Se quiser criar o seu próprio Dockerfile para uma tarefa de modelo flexível, especifique as seguintes variáveis de ambiente:
Java
Especifique FLEX_TEMPLATE_JAVA_MAIN_CLASS
e FLEX_TEMPLATE_JAVA_CLASSPATH
no seu Dockerfile.
ENV | Descrição | Obrigatória |
---|---|---|
FLEX_TEMPLATE_JAVA_MAIN_CLASS |
Especifica a classe Java a executar para iniciar o modelo flexível. | SIM |
FLEX_TEMPLATE_JAVA_CLASSPATH |
Especifica a localização dos ficheiros de classe. | SIM |
FLEX_TEMPLATE_JAVA_OPTIONS |
Especifica as opções Java a transmitir durante o lançamento do modelo flexível. | NÃO |
Python
Especifique FLEX_TEMPLATE_PYTHON_PY_FILE
no seu Dockerfile.
Para gerir as dependências do pipeline, defina variáveis no seu Dockerfile, como as seguintes:
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
FLEX_TEMPLATE_PYTHON_PY_OPTIONS
FLEX_TEMPLATE_PYTHON_SETUP_FILE
FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES
Por exemplo, as seguintes variáveis de ambiente são definidas no Tutorial de streaming no modelo flexível do Python no GitHub:
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"
ENV | Descrição | Obrigatória |
---|---|---|
FLEX_TEMPLATE_PYTHON_PY_FILE |
Especifica o ficheiro Python a executar para iniciar o modelo flexível. | SIM |
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE |
Especifica o ficheiro de requisitos com dependências do pipeline. Para mais informações, consulte a secção Dependências do PyPI na documentação do Apache Beam. | NÃO |
FLEX_TEMPLATE_PYTHON_SETUP_FILE |
Especifica o caminho para o ficheiro `setup.py` do pacote de pipeline. Para mais informações, consulte a secção Várias dependências de ficheiros na documentação do Apache Beam. | NÃO |
FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES |
Especifica os pacotes que não estão disponíveis publicamente. Para obter informações sobre como usar pacotes adicionais, leia o artigo Dependências locais ou não pertencentes ao PyPI. |
NÃO |
FLEX_TEMPLATE_PYTHON_PY_OPTIONS |
Especifica as opções do Python a transmitir durante o lançamento do modelo flexível. | NÃO |
Dependências de pacotes para Python
Quando um pipeline Python do Dataflow usa dependências adicionais, pode ter de configurar o modelo flexível para instalar dependências adicionais em VMs de trabalho do Dataflow.
Quando executa uma tarefa do Dataflow Python que usa modelos flexíveis num ambiente que restringe o acesso à Internet, tem de pré-criar pacotes das dependências quando cria o modelo.
Use uma das seguintes opções para pré-embalar dependências do Python.
Para ver instruções sobre como gerir dependências de pipelines em pipelines Java e Go, consulte o artigo Faça a gestão das dependências de pipelines no Dataflow.
Use um ficheiro de requisitos e pré-embale as dependências com o modelo
Se estiver a usar o seu próprio Dockerfile para definir a imagem do modelo flexível, siga estes passos:
Crie um ficheiro
requirements.txt
que liste as dependências da sua pipeline.COPY requirements.txt /template/ ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="/template/requirements.txt"
Instale as dependências na imagem do modelo flexível.
RUN pip install --no-cache-dir -r $FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
Transfira as dependências para a cache de requisitos local, que é preparada para os trabalhadores do Dataflow quando o modelo é iniciado.
RUN pip download --no-cache-dir --dest /tmp/dataflow-requirements-cache -r $FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
Quando usa esta abordagem, as dependências do ficheiro requirements.txt
são instaladas nos trabalhadores do Dataflow em tempo de execução. Uma estatística no separador de recomendações da Google Cloud consola
pode indicar este comportamento. Para evitar a instalação de dependências no tempo de execução, use uma imagem de contentor personalizada.
Segue-se um exemplo de código que usa um ficheiro de requisitos no FlexTemplate.
Estruture o pipeline como um pacote e use pacotes locais
Quando usa vários ficheiros ou módulos locais do Python, estruture a sua pipeline como um pacote. A estrutura do ficheiro pode ter o seguinte aspeto:
main.py
pyproject.toml
setup.py
src/
my_package/
__init__.py
my_custom_dofns_and_transforms.py
my_pipeline_launcher.py
other_utils_and_helpers.py
Coloque o ponto de entrada de nível superior, por exemplo, o ficheiro
main.py
, no diretório raiz. Coloque os restantes ficheiros numa pasta separada no diretóriosrc
, por exemplo,my_package
.Adicione os ficheiros de configuração do pacote ao diretório raiz com os detalhes e os requisitos do pacote.
pyproject.toml
[project] name = "my_package" version = "package_version" dependencies = [ # Add list of packages (and versions) that my_package depends on. # Example: "apache-beam[gcp]==2.54.0", ]
setup.py
"""An optional setuptools configuration stub for the pipeline package. Use pyproject.toml to define the package. Add this file only if you must use the --setup_file pipeline option or the FLEX_TEMPLATE_PYTHON_SETUP_FILE configuration option. """ import setuptools setuptools.setup()
Para mais informações sobre como configurar o seu pacote local, consulte o artigo Criar pacotes de projetos Python.
Quando importa módulos ou ficheiros locais para o seu pipeline, use o nome do pacote
my_package
como o caminho de importação.from my_package import word_count_transform
Instale o pacote de pipeline na imagem do modelo flexível. O Dockerfile do modelo flexível pode incluir conteúdo semelhante ao seguinte exemplo:
Ficheiro Docker
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/main.py" ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE="${WORKDIR}/setup.py" # Copy pipeline, packages and requirements. WORKDIR ${WORKDIR} COPY main.py . COPY pyproject.toml . COPY setup.py . COPY src src # Install local package. RUN pip install -e .
Quando usa esta abordagem, as dependências do ficheiro requirements.txt
são instaladas nos trabalhadores do Dataflow em tempo de execução. Uma estatística no separador de recomendações da Google Cloud consola
pode indicar este comportamento. Para evitar a instalação de dependências no tempo de execução,
use uma imagem de contentor personalizada.
Para ver um exemplo que segue a abordagem recomendada, consulte o tutorial Modelo flexível para um pipeline com dependências e uma imagem de contentor personalizada no GitHub.
Use um contentor personalizado que pré-instale todas as dependências
Para evitar a instalação de dependências no tempo de execução, use contentores personalizados. Esta opção é preferível para pipelines executados em ambientes sem acesso à Internet.
Siga estes passos para usar um contentor personalizado:
Crie uma imagem de contentor personalizada que pré-instale as dependências necessárias.
Pré-instale as mesmas dependências no Dockerfile do modelo flexível.
Para impedir a instalação de dependências no tempo de execução, não use as opções
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
ouFLEX_TEMPLATE_PYTHON_SETUP_FILE
na configuração do modelo flexível.Um modelo flexível modificado
Dockerfile
pode ter o seguinte aspeto:FROM gcr.io/dataflow-templates-base/python3-template-launcher-base ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/main.py" COPY . /template # If you use a requirements file, pre-install the requirements.txt. RUN pip install --no-cache-dir -r /template/requirements.txt # If you supply the pipeline in a package, pre-install the local package and its dependencies. RUN pip install -e /template
Quando usa esta abordagem, faz o seguinte:
- criar a imagem do modelo flexível
- criar a imagem de contentor do SDK personalizado
- instalar as mesmas dependências em ambas as imagens
Em alternativa, para reduzir o número de imagens a manter, use a sua imagem de contentor personalizada como imagem de base para o modelo flexível.
Se usar a versão 2.49.0 ou anterior do SDK do Apache Beam, adicione a opção de pipeline
--sdk_location=container
no iniciador de pipeline. Esta opção indica ao seu pipeline para usar o SDK do seu contentor personalizado em vez de transferir o SDK.options = PipelineOptions(beam_args, save_main_session=True, streaming=True, sdk_location="container")
Defina o parâmetro
sdk_container_image
no comandoflex-template run
. Por exemplo:gcloud dataflow flex-template run $JOB_NAME \ --region=$REGION \ --template-file-gcs-location=$TEMPLATE_PATH \ --parameters=sdk_container_image=$CUSTOM_CONTAINER_IMAGE \ --additional-experiments=use_runner_v2
Para mais informações, consulte o artigo Use contentores personalizados no Dataflow.
Escolha uma imagem base
Pode usar uma imagem base fornecida pela Google para criar pacotes de imagens de contentores de modelos com o Docker. Escolha a etiqueta mais recente das imagens base dos modelos flexíveis.
Recomendamos que use uma etiqueta de imagem específica em vez de latest
. As imagens base estão alojadas em gcr.io/dataflow-templates-base
.
Especifique a imagem de base no seguinte formato:
gcr.io/dataflow-templates-base/IMAGE_NAME:TAG
Substitua o seguinte:
IMAGE_NAME
: uma imagem base fornecida pela GoogleTAG
: um nome de versão para a imagem base, encontrado na referência de imagens base de modelos flexíveis
Use imagens de contentores personalizadas
Se o seu pipeline usar uma imagem de contentor personalizada, recomendamos que use a imagem personalizada como imagem base para a imagem Docker do modelo flexível. Para tal, copie o ficheiro binário do iniciador do modelo flexível da imagem base do modelo fornecida pela Google para a sua imagem personalizada.
Um exemplo Dockerfile
de uma imagem que pode ser usada como imagem do contentor do SDK personalizado e como modelo flexível pode ter o seguinte aspeto:
FROM gcr.io/dataflow-templates-base/IMAGE_NAME:TAG as template_launcher
FROM apache/beam_python3.10_sdk:2.68.0
# RUN <...Make image customizations here...>
# See: https://cloud.google.com/dataflow/docs/guides/build-container-image
# Configure the Flex Template here.
COPY --from=template_launcher /opt/google/dataflow/python_template_launcher /opt/google/dataflow/python_template_launcher
COPY my_pipeline.py /template/
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/my_pipeline.py"
Substitua o seguinte:
IMAGE_NAME
: uma imagem base fornecida pela Google. Por exemplo:python311-template-launcher-base
.TAG
: uma etiqueta de versão para a imagem base encontrada na referência de imagens base de modelos flexíveis. Para uma melhor estabilidade e resolução de problemas, evite usarlatest
. Em alternativa, afixe-o a uma etiqueta de versão específica.
Para ver um exemplo que segue esta abordagem, consulte o tutorial Modelo flexível para um pipeline com dependências e uma imagem de contentor personalizada.
Use uma imagem de um registo privado
Pode criar uma imagem de modelo flexível armazenada num registo do Docker privado, se o registo privado usar HTTPS e tiver um certificado válido.
Para usar uma imagem de um registo privado, especifique o caminho para a imagem e um nome de utilizador e uma palavra-passe para o registo. O nome de utilizador e a palavra-passe têm de ser armazenados no Secret Manager. Pode fornecer o segredo num dos seguintes formatos:
projects/{project}/secrets/{secret}/versions/{secret_version}
projects/{project}/secrets/{secret}
Se usar o segundo formato, uma vez que não especifica a versão, o Dataflow usa a versão mais recente.
Se o registo usar um certificado autoassinado, também tem de especificar o caminho para o certificado autoassinado no Cloud Storage.
A tabela seguinte descreve as opções da CLI gcloud que pode usar para configurar um registo privado.
Parâmetro | Descrição |
---|---|
image
|
A morada do registo. Por exemplo:
gcp.repository.example.com:9082/registry/example/image:latest .
|
image-repository-username-secret-id
|
O ID do segredo do Secret Manager para o nome de utilizador a autenticar
no registo privado. Por exemplo:
projects/example-project/secrets/username-secret .
|
image-repository-password-secret-id
|
O ID do Secret do Secret Manager para a palavra-passe para autenticar
no registo privado. Por exemplo:
projects/example-project/secrets/password-secret/versions/latest .
|
image-repository-cert-path
|
O URL completo do Cloud Storage para um certificado autoassinado para o
registo privado. Este valor só é necessário se o registo usar um certificado
autossinado. Por exemplo:
gs://example-bucket/self-signed.crt .
|
Segue-se um exemplo de um comando da CLI gcloud que cria um modelo flexível com uma imagem num registo privado com um certificado autoassinado.
gcloud dataflow flex-template build gs://example-bucket/custom-pipeline-private-repo.json --sdk-language=JAVA --image="gcp.repository.example.com:9082/registry/example/image:latest" --image-repository-username-secret-id="projects/example-project/secrets/username-secret" --image-repository-password-secret-id="projects/example-project/secrets/password-secret/versions/latest" --image-repository-cert-path="gs://example-bucket/self-signed.crt" --metadata-file=metadata.json
Para criar o seu próprio modelo flexível, tem de substituir os valores de exemplo e pode ter de especificar opções diferentes ou adicionais. Para saber mais, consulte os seguintes recursos:
Especifique as opções de tubagem
Para obter informações sobre as opções de pipeline suportadas diretamente pelos modelos flexíveis, consulte Opções de pipeline.
Também pode usar quaisquer opções de pipeline do Apache Beam indiretamente. Se estiver a usar um ficheiro metadata.json
para o seu trabalho de modelo flexível, inclua estas opções de pipeline no ficheiro. Este ficheiro de metadados tem de seguir o formato indicado em
TemplateMetadata
.
Caso contrário, quando iniciar a tarefa de modelo flexível, transmita estas opções do pipeline através do campo de parâmetros.
Para opções experimentais de tempo de execução ou opções comuns da pipeline de tempo de execução que não são
expostas explicitamente nos metadados do modelo, transmita estas opções através dos campos additional-experiments
ou additional-pipeline-options
.
API
Inclua opções de pipeline através do campo
parameters
.Inclua experiências de tempo de execução e opções de pipeline através dos campos
additionalExperiments
eadditionalPipelineOptions
.
O exemplo seguinte mostra como incluir opções de pipeline, experiências e opções adicionais num corpo do pedido:
{
"jobName": "my-flex-template-job",
"parameters": {
"option_defined_in_metadata": "value"
},
"environment": {
"additionalExperiments": [
"use_runner_v2"
],
"additionalPipelineOptions": {
"common_pipeline_option": "value"
}
}
}
gcloud
Inclua opções de pipeline através da flag
parameters
.Inclua experiências de tempo de execução e opções de pipeline usando as flags
additional-experiments
eadditional-pipeline-options
.
Quando transmite parâmetros do tipo List
ou Map
, pode ter de definir parâmetros num ficheiro YAML e usar a flag flags-file
.
Quando usa modelos flexíveis, pode configurar algumas opções do pipeline durante a inicialização do pipeline, mas não pode alterar outras opções do pipeline. Se os argumentos da linha de comandos exigidos pelo modelo flexível forem substituídos, a tarefa pode ignorar, substituir ou rejeitar as opções da pipeline transmitidas pelo iniciador de modelos. A tarefa pode não ser iniciada ou pode ser iniciada uma tarefa que não use o modelo flexível. Para mais informações, consulte o artigo Falha ao ler o ficheiro de tarefa.
Durante a inicialização do pipeline, não altere as seguintes opções do pipeline:
Java
runner
project
jobName
templateLocation
region
Python
runner
project
job_name
template_location
region
Go
runner
project
job_name
template_location
region
Bloqueie as chaves SSH do projeto em VMs que usam chaves SSH baseadas em metadados
Pode impedir que as VMs aceitem chaves SSH armazenadas nos metadados do projeto
bloqueando as chaves SSH do projeto nas VMs. Use o sinalizador additional-experiments
com a opção de serviço block_project_ssh_keys
:
--additional-experiments=block_project_ssh_keys
Para mais informações, consulte as opções de serviço do Dataflow.
Metadados
Pode expandir o modelo com metadados adicionais para que os parâmetros personalizados sejam validados quando o modelo é executado. Se quiser criar metadados para o seu modelo, siga estes passos:
- Crie um ficheiro
metadata.json
usando os parâmetros em Parâmetros de metadados.Para ver um exemplo, consulte o ficheiro de metadados de exemplo.
- Armazene o ficheiro de metadados no Cloud Storage na mesma pasta que o modelo.
Parâmetros de metadados
Chave do parâmetro | Obrigatória | Descrição do valor | |
---|---|---|---|
name |
Sim | O nome do modelo. | |
description |
Não | Um breve parágrafo de texto que descreve o modelo. | |
streaming |
Não | Se for true , este modelo suporta streaming. O valor predefinido é
false . |
|
supportsAtLeastOnce |
Não | Se true , este modelo suporta o processamento pelo menos uma vez. O valor predefinido
é false . Defina este parâmetro como true se o modelo for concebido
para funcionar com o modo de streaming, pelo menos, uma vez.
|
|
supportsExactlyOnce |
Não | Se true , este modelo suporta o
processamento exatamente uma vez. O valor
predefinido é true . |
|
defaultStreamingMode |
Não | O modo de streaming predefinido para modelos que suportam o modo pelo menos uma vez e o modo exatamente uma vez. Use um dos seguintes valores: "AT_LEAST_ONCE" ,
"EXACTLY_ONCE" . Se não for especificado, o modo de streaming predefinido é exatamente uma vez.
|
|
parameters |
Não | Uma matriz de parâmetros adicionais que o modelo usa. Por predefinição, é usado um array vazio. | |
name |
Sim | O nome do parâmetro usado no seu modelo. | |
label |
Sim | Uma string legível que é usada na Google Cloud consola para etiquetar o parâmetro. | |
helpText |
Sim | Um breve parágrafo de texto que descreve o parâmetro. | |
isOptional |
Não | false se o parâmetro for obrigatório e true se o parâmetro for
opcional. A menos que seja definido com um valor, isOptional tem como predefinição false .
Se não incluir esta chave de parâmetro para os metadados, os metadados tornam-se um parâmetro obrigatório. |
|
regexes |
Não | Uma matriz de expressões regulares POSIX-egrep em formato de string que é usada para validar o valor do parâmetro. Por exemplo, ["^[a-zA-Z][a-zA-Z0-9]+"] é uma única expressão regular que valida se o valor começa com uma letra e, em seguida, tem um ou mais carateres. Por predefinição, é usado um conjunto vazio. |
Exemplo de ficheiro de metadados
Java
{ "name": "Streaming Beam SQL", "description": "An Apache Beam streaming pipeline that reads JSON encoded messages from Pub/Sub, uses Beam SQL to transform the message data, and writes the results to a BigQuery", "parameters": [ { "name": "inputSubscription", "label": "Pub/Sub input subscription.", "helpText": "Pub/Sub subscription to read from.", "regexes": [ "[a-zA-Z][-_.~+%a-zA-Z0-9]{2,}" ] }, { "name": "outputTable", "label": "BigQuery output table", "helpText": "BigQuery table spec to write to, in the form 'project:dataset.table'.", "isOptional": true, "regexes": [ "[^:]+:[^.]+[.].+" ] } ] }
Python
{ "name": "Streaming beam Python flex template", "description": "Streaming beam example for python flex template.", "parameters": [ { "name": "input_subscription", "label": "Input PubSub subscription.", "helpText": "Name of the input PubSub subscription to consume from.", "regexes": [ "projects/[^/]+/subscriptions/[a-zA-Z][-_.~+%a-zA-Z0-9]{2,}" ] }, { "name": "output_table", "label": "BigQuery output table name.", "helpText": "Name of the BigQuery output table name.", "isOptional": true, "regexes": [ "([^:]+:)?[^.]+[.].+" ] } ] }
Pode transferir ficheiros de metadados para os modelos fornecidos pela Google a partir do Dataflow diretório de modelos.
Compreenda a localização de preparação e a localização temporária
A CLI do Google Cloud oferece opções --staging-location
e --temp-location
quando executa um modelo flexível.
Da mesma forma, a API REST do Dataflow fornece campos stagingLocation
e tempLocation
para FlexTemplateRuntimeEnvironment.
Para modelos flexíveis, a localização de preparação é o URL do Cloud Storage para o qual os ficheiros são escritos durante o passo de preparação do lançamento de um modelo. O fluxo de dados lê estes ficheiros preparados para criar o gráfico de modelos. O temp location é o URL do Cloud Storage para o qual os ficheiros temporários são escritos durante o passo de execução.
Atualize uma tarefa de modelo flexível
O pedido de exemplo seguinte mostra como atualizar uma tarefa de streaming de modelos através do método projects.locations.flexTemplates.launch. Se quiser usar a CLI gcloud, consulte o artigo Atualize um pipeline existente.
Se quiser atualizar um modelo clássico, use projects.locations.templates.launch em alternativa.
Siga os passos para criar uma tarefa de streaming a partir de um modelo flexível. Envie o seguinte pedido HTTP POST com os valores modificados:
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch { "launchParameter": { "update": true "jobName": "JOB_NAME", "parameters": { "input_subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME", "output_table": "PROJECT_ID:DATASET.TABLE_NAME" }, "containerSpecGcsPath": "STORAGE_PATH" }, }
- Substitua
PROJECT_ID
pelo ID do seu projeto. - Substitua
REGION
pela região do Dataflow do trabalho que está a atualizar. - Substitua
JOB_NAME
pelo nome exato da tarefa que quer atualizar. - Defina
parameters
para a sua lista de pares de chave-valor. Os parâmetros indicados são específicos deste exemplo de modelo. Se estiver a usar um modelo personalizado, modifique os parâmetros conforme necessário. Se estiver a usar o modelo de exemplo, substitua as seguintes variáveis.- Substitua
SUBSCRIPTION_NAME
pelo nome da sua subscrição do Pub/Sub. - Substitua
DATASET
pelo nome do seu conjunto de dados do BigQuery. - Substitua
TABLE_NAME
pelo nome da tabela do BigQuery.
- Substitua
- Substitua
STORAGE_PATH
pela localização do ficheiro de modelo no Cloud Storage. A localização deve começar porgs://
.
- Substitua
Use o parâmetro
environment
para alterar as definições do ambiente. Para mais informações, consulteFlexTemplateRuntimeEnvironment
.Opcional: para enviar o seu pedido através do curl (Linux, macOS ou Cloud Shell), guarde o pedido num ficheiro JSON e, em seguida, execute o seguinte comando:
curl -X POST -d "@FILE_PATH" -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch
Substitua FILE_PATH pelo caminho para o ficheiro JSON que contém o corpo do pedido.
Use a interface de monitorização do fluxo de dados para verificar se foi criada uma nova tarefa com o mesmo nome. Esta tarefa tem o estado Atualizado.
Limitações
Aplicam-se as seguintes limitações aos trabalhos de modelos flexíveis:
- Tem de usar uma imagem de base fornecida pela Google para criar pacotes dos seus contentores através do Docker. Para ver uma lista das imagens aplicáveis, consulte o artigo Imagens base do modelo flexível.
- O programa que cria o pipeline tem de terminar após a chamada de
run
para que o pipeline seja iniciado. - O
waitUntilFinish
(Java) e owait_until_finish
(Python) não são suportados.
O que se segue?
- Para saber mais sobre os modelos clássicos, os modelos flexíveis e os respetivos cenários de utilização, consulte o artigo Modelos do Dataflow.
- Para informações sobre a resolução de problemas de modelos flexíveis, consulte o artigo Resolva problemas de tempo limite de modelos flexíveis.
- Para ver mais arquiteturas de referência, diagramas e práticas recomendadas, explore o Centro de arquitetura na nuvem.