O Dataplex Universal Catalog suporta a programação da execução de código personalizado, quer seja como uma execução única, num horário regular ou a pedido. A funcionalidade a pedido está em pré-visualização e só está disponível através da API. Pode agendar transformações de dados de clientes através do Spark (Java), PySpark (limitado à versão 3.2 do Spark) ou Spark SQL. O Dataplex Universal Catalog executa o código através do processamento do Spark sem servidor e de um programador sem servidor incorporado.
Terminologia
- Tarefa
- Uma tarefa do Dataplex Universal Catalog representa o trabalho que quer que o Dataplex Universal Catalog faça de acordo com um horário. Encapsula o seu código, os seus parâmetros e a programação.
- Emprego
Um trabalho representa uma única execução de uma tarefa do Dataplex Universal Catalog. Por exemplo, se uma tarefa estiver agendada para ser executada diariamente, o Dataplex Universal Catalog cria uma tarefa todos os dias.
Para tarefas criadas a 10 de maio de 2023 ou após essa data, o campo Acionador mostra o tipo de acionador de execução da tarefa.
Seguem-se os tipos de acionadores de execução de tarefas:
RUN_REQUEST: indica que a tarefa foi executada devido à chamada da API
RunTask
.TASK_CONFIG: indica que a tarefa foi executada devido à
TriggerSpec
configuração da tarefa.
Modos de agendamento
O Dataplex Universal Catalog suporta os seguintes modos de agendamento:
- Executar uma vez
- Use este modo para executar a tarefa apenas uma vez. Pode optar por executá-lo imediatamente ou numa hora definida no futuro. Se executar a tarefa imediatamente, a execução pode demorar até dois minutos a começar.
- Executar com base numa programação
- Use este modo para executar a tarefa com uma frequência repetida. As repetições suportadas são diárias, semanais, mensais ou personalizadas.
- Execução a pedido
Use este modo para executar uma tarefa criada anteriormente a pedido. O modo de execução a pedido só é suportado pela API
RunTask
. Quando a tarefa é executada a pedido, o Dataplex Universal Catalog usa os parâmetros existentes para criar uma tarefa. Pode especificar os argumentosExecutionSpec
e as etiquetas para executar a tarefa.
Antes de começar
Ative a API Dataproc.
Ative o acesso privado da Google para a sua rede e sub-rede. Ative o acesso privado à Google na rede que usa com as tarefas do Dataplex Universal Catalog. Se não especificar uma rede nem uma sub-rede quando criar a tarefa do Dataplex Universal Catalog, o Dataplex Universal Catalog usa a sub-rede predefinida, e tem de ativar o acesso privado à Google para a sub-rede predefinida.
Crie uma conta de serviço. É necessária uma conta de serviço para agendar tarefas do Dataplex Universal Catalog. A conta de serviço tem de pertencer ao projeto no qual executa as tarefas. A conta de serviço tem de ter as seguintes autorizações:
Acesso aos dados do BigQuery e do Cloud Storage que estão a ser processados.
Autorização Função de trabalhador do Dataproc no projeto no qual executa a tarefa.
Se a tarefa precisar de ler ou atualizar a instância do Metastore do Dataproc anexada ao lake, a conta de serviço precisa da função Leitor ou Editor do Metastore do Dataproc. Esta função tem de ser concedida no projeto onde o lake do Dataplex Universal Catalog está configurado.
Se a tarefa for uma tarefa do Spark SQL, tem de conceder à conta de serviço a função de programador do catálogo universal do Dataplex. Esta função tem de ser concedida no projeto onde o lake do Dataplex Universal Catalog está configurado.
Se a tarefa for um trabalho do Spark SQL, precisa de autorizações de administrador do Cloud Storage no contentor onde os resultados são escritos.
Para agendar e executar tarefas personalizadas e de SQL do Spark, tem de lhe ser concedido os seguintes papéis do IAM na sua conta de serviço: Leitor de metadados do Dataplex Universal Catalog (
roles/dataplex.metadataReader
), Visualizador do Dataplex Universal Catalog (roles/dataplex.viewer
) e utilizador de metadados do Dataproc Metastore (roles/metastore.metadataUser
).
Conceda ao utilizador que envia a tarefa a função Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço. Para ver instruções, consulte o artigo Faça a gestão do acesso às contas de serviço.Conceda autorizações à conta de serviço do lago do Dataplex Universal Catalog para usar a conta de serviço. Pode encontrar a conta de serviço do lake do Dataplex Universal Catalog na página Detalhes do lake da Google Cloud consola.
Se o projeto que contém o lake do Dataplex Universal Catalog for diferente do projeto no qual a tarefa vai ser executada, conceda à conta de serviço do lake do Dataplex Universal Catalog o papel de editor do Dataproc no projeto no qual executa a tarefa.
Coloque os artefactos de código necessários (ficheiros JAR, Python ou de script SQL) ou ficheiros arquivados (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) num caminho do Cloud Storage.Certifique-se de que a conta de serviço tem a
storage.objects.get
autorização necessária para o contentor do Cloud Storage que armazena estes artefactos de código.
Agende uma tarefa do Spark (Java ou Python)
Consola
Na Google Cloud consola, aceda à página Processo do Dataplex Universal Catalog.
Clique em Criar tarefa.
Para Criar tarefa personalizada do Spark, clique em Criar tarefa.
Escolha um lake do Dataplex Universal Catalog.
Indique um nome para a tarefa.
Crie um ID para a sua tarefa.
Na secção Configuração da tarefa, em Tipo, selecione Spark ou PySpark.
Introduza os argumentos relevantes.
No campo Conta de serviço, introduza uma conta de serviço de utilizador com a qual a sua tarefa do Spark personalizada pode ser executada.
Clique em Continuar.
Opcional: Definir programação: selecione Executar uma vez ou Repetir. Preencha os campos obrigatórios.
Clique em Continuar.
Opcional: personalize os recursos e adicione definições adicionais.
Clique em Criar.
gcloud
Pode agendar uma tarefa do Spark (Java / Python) através do comando da CLI gcloud. A tabela seguinte lista os parâmetros obrigatórios e opcionais a usar:
Parâmetro | Descrição |
---|---|
--lake |
O ID do lago para o recurso de lago do serviço Dataplex Universal Catalog. |
--location |
A localização do serviço Dataplex Universal Catalog. |
--spark-main-class |
A classe principal do condutor. O ficheiro jar que
contém a classe tem de estar no CLASSPATH predefinido.
|
--spark-main-jar-file-uri |
O URI do Cloud Storage do ficheiro jar que contém
a classe principal.
|
--spark-archive-uris |
Opcional: URIs do Cloud Storage de arquivos a extrair para o diretório de trabalho de cada executor. Tipos de ficheiros suportados:
.jar , .tar , .tar.gz ,
.tgz e .zip .
|
--spark-file-uris |
Opcional: URIs do Cloud Storage de ficheiros a colocar no diretório de trabalho de cada executor. |
--batch-executors-count |
Opcional: o número total de executores de tarefas. O valor predefinido é 2. |
--batch-max-executors-count |
Opcional: o número máximo de executores configuráveis. O valor
predefinido é 1000. Se batch-max-executors-count for superior a
batch-executors-count , o Dataplex Universal Catalog ativa o
dimensionamento automático.
|
--container-image-java-jars |
Opcional: uma lista de JARs Java a adicionar ao caminho de classe. A entrada válida
inclui URIs do Cloud Storage para ficheiros binários JAR. Por exemplo, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Opcional: chaves de propriedades, especificadas num formato prefix:property .Por exemplo, core:hadoop.tmp.dir .Para mais informações, consulte Propriedades do cluster. |
--vpc-network-tags |
Opcional: uma lista de etiquetas de rede a aplicar à tarefa. |
--vpc-network-name |
Opcional: a rede de nuvem privada virtual na qual a tarefa é executada. Por
predefinição, o Dataplex Universal Catalog usa a rede VPC
denominada Default no projeto. Só pode usar uma das seguintes opções: --vpc-network-name ou --vpc-sub-network-name .
|
--vpc-sub-network-name |
Opcional: a sub-rede de VPC na qual a tarefa é executada.
Tem de usar apenas uma das seguintes opções: --vpc-sub-network-name
ou --vpc-network-name .
|
--trigger-type |
Tipo de acionador da tarefa especificada pelo utilizador. Os valores têm de ser um dos seguintes:ON_DEMAND : a tarefa é executada uma vez pouco depois da criação da tarefa.RECURRING : a tarefa é executada periodicamente de acordo com uma programação.
|
--trigger-start-time |
Opcional: a hora da primeira execução da tarefa. O formato é `{year}-{month}-{day}T{hour}:{min}:{sec}Z`, em que o fuso horário é UTC. Por exemplo, "2017-01-15T01:30:00Z" codifica 01:30 UTC a 15 de janeiro de 2017. Se este valor não for especificado, a tarefa é executada
após o envio, se o tipo de acionador for ON_DEMAND , ou
na programação especificada, se o tipo de acionador for
RECURRING .
|
--trigger-disabled |
Opcional: impede a execução da tarefa. Este parâmetro não cancela as tarefas já em execução, mas desativa temporariamente as tarefas RECURRING .
|
--trigger-max-retires |
Opcional: o número de tentativas antes de anular. Defina o valor como zero para nunca tentar novamente uma tarefa com falha. |
--trigger-schedule |
Cron schedule para executar tarefas periodicamente. |
--description |
Opcional: descrição da tarefa. |
--display-name |
Opcional: nome a apresentar da tarefa. |
--labels |
Opcional: lista de pares de KEY=VALUE de etiquetas a adicionar. |
--execution-args |
Opcional: os argumentos a transmitir à tarefa. Os argumentos podem ser uma combinação de
pares de chave-valor. Pode transmitir uma lista de pares de chave-valor separados por vírgulas como argumentos de execução. Para transmitir argumentos posicionais, defina a chave como
TASK_ARGS e defina o valor como uma string separada por vírgulas de
todos os argumentos posicionais. Para usar um delimitador diferente de uma vírgula, consulte a secção sobre caracteres de escape.Caso sejam transmitidos argumentos key-value e posicionais
em conjunto, TASK_ARGS é transmitido como o último argumento.
|
--execution-service-account |
Conta de serviço a usar para executar uma tarefa. |
--max-job-execution-lifetime |
Opcional: a duração máxima antes de a execução da tarefa expirar. |
--container-image |
Opcional: imagem de contentor personalizada para o ambiente de tempo de execução da tarefa. Se não for especificada, é usada uma imagem de contentor predefinida. |
--kms-key |
Opcional: a chave do Cloud KMS a usar para a encriptação, no formato:projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}
|
Exemplo de Java:
glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND –spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>
Exemplo do PySpark:
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>
REST
Para criar uma tarefa, use o Explorador de APIs.
Agende uma tarefa Spark SQL
gcloud
Para agendar uma tarefa Spark SQL, execute o mesmo comando da CLI gcloud que no artigo Agende uma tarefa Spark (Java ou Python), com os seguintes parâmetros adicionais:
Parâmetro | Descrição |
---|---|
--spark-sql-script |
O texto da consulta SQL. É necessário spark-sql-script ou
spark-sql-script-file . |
--spark-sql-script-file |
Uma referência a um ficheiro de consulta. Este valor pode ser o URI do Cloud Storage do ficheiro de consulta ou o caminho para o conteúdo do script SQL.
É necessário spark-sql-script ou
spark-sql-script-file . |
--execution-args |
Para tarefas do Spark SQL, os seguintes argumentos são obrigatórios e têm de ser
transmitidos como argumentos posicionais:--output_location, <GCS uri of the output directory> --output_format, <output file format> .Os formatos suportados são ficheiro CSV, ficheiro JSON, parquet e orc. |
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>
REST
Para criar uma tarefa, use o Explorador de APIs.
Monitorize a sua tarefa
Consola
Na Google Cloud consola, aceda à página Processo do Dataplex Universal Catalog.
No separador Tarefas, existe uma lista de tarefas filtradas por tipos de modelos de tarefas.
Na coluna Nome, clique em qualquer tarefa que queira ver.
Clique no ID da tarefa da tarefa que quer ver.
A página do Dataproc é aberta na Google Cloud consola que lhe permite ver os detalhes de monitorização e saída.
gcloud
A tabela seguinte lista os comandos da CLI gcloud para monitorizar as suas tarefas.
Ação | Comando da CLI gcloud |
---|---|
Listar tarefas | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Ver detalhes da tarefa | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Listar trabalhos de uma tarefa | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Visualização dos detalhes do emprego | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
O Dataplex Universal Catalog executa tarefas no Serverless para Apache Spark (em lotes). Para ver os registos de execução de uma tarefa do Dataplex Universal Catalog, siga estes passos:
Obtenha o ID da tarefa do Dataproc Serverless (lotes). Execute o seguinte comando:
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Veja os registos. Execute o seguinte comando, usando o ID da tarefa que obteve ao executar o comando anterior:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Para get
ou list
uma tarefa
ou um trabalho,
use o Explorador de APIs.
Faça a gestão da agenda
Na Google Cloud consola, no catálogo universal do Dataplex, pode editar a agenda de uma tarefa, eliminar uma tarefa ou cancelar um trabalho em curso. A tabela seguinte apresenta os comandos da CLI gcloud para estas ações.
Ação | Comando da CLI gcloud |
---|---|
Edite o agendamento de tarefas | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Elimine uma tarefa | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Cancelar uma tarefa | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
O que se segue?
- Consulte os modelos do Dataproc.
- Experimente um modelo pré-criado para mover dados incrementalmente de recursos do Cloud Storage do catálogo universal do Dataplex para o BigQuery.
- Consulte o artigo Configure alertas e notificações para tarefas do Dataplex Universal Catalog.