O Dataplex é compatível com a programação de execuções personalizadas de código, seja como uma única execução, em uma programação regular ou sob demanda. Sob demanda está em visualização e está disponível apenas por meio da API. É possível programar transformações de dados do cliente usando o Spark (Java), o PySpark (limitado ao Spark versão 3.2) ou o Spark SQL. O Dataplex executa o código usando o processamento sem servidor do Spark e um programador sem servidor integrado.
Terminologia
- Tarefa
- Uma tarefa do Dataplex representa o trabalho que você quer que ele realize em uma programação. Ela encapsula o código, os parâmetros e a programação.
- Job
Um job representa uma única execução de uma tarefa do Dataplex. Por exemplo, se uma tarefa estiver programada para ser executada diariamente, o Dataplex criará um job todos os dias.
Para jobs criados a partir de 10 de maio de 2023, o campo Gatilho mostra o tipo de acionador de execução do job.
Veja a seguir os tipos de acionador de execução do job:
RUN_REQUEST: indica que o job foi executado devido à chamada da API
RunTask
.TASK_CONFIG: indica que o job foi executado devido à configuração
TriggerSpec
da tarefa.
Modos de programação
O Dataplex é compatível com os seguintes modos de programação:
- Executar uma vez
- Use este modo para executar sua tarefa apenas uma vez. É possível executá-lo imediatamente ou em um horário definido no futuro. Se você executar a tarefa imediatamente, pode levar até dois minutos para que a execução seja iniciada.
- Executar em uma programação
- Use esse modo para executar a tarefa em uma frequência repetida. As repetições compatíveis são diárias, semanais, mensais ou personalizadas.
- Executar sob demanda
Use esse modo para executar uma tarefa criada anteriormente sob demanda. O modo de execução sob demanda só é compatível com a API
RunTask
. Quando o job é executado sob demanda, o Dataplex usa parâmetros existentes para criar um job. É possível especificar os argumentosExecutionSpec
e os rótulos para executar o job.
Antes de começar
Ativar a API Dataproc.
Ative o Acesso privado do Google para sua rede e sub-rede. Ative o Acesso privado do Google na rede usada com as tarefas do Dataplex. Se você não especificar uma rede ou sub-rede ao criar a tarefa do Dataplex, o Dataplex usará a sub-rede padrão, e você precisará ativar o Acesso privado do Google para a sub-rede padrão.
Crie uma conta de serviço. É necessário ter uma conta de serviço para programar qualquer tarefa do Dataplex. A conta de serviço precisa pertencer ao projeto em que você executa as tarefas. A conta de serviço precisa ter as seguintes permissões:
Acesso aos dados do BigQuery e/ou do Cloud Storage que estão sendo processados.
Permissão do Dataproc Worker Role no projeto em que a tarefa é executada.
Se a tarefa precisar ler ou atualizar a instância do Dataproc Metastore anexada ao lake, a conta de serviço precisará do papel Leitor do Dataproc Metastore ou Editor. Esse papel precisa ser concedido no projeto em que o lago do Dataplex está configurado.
Se a tarefa for um job do Spark SQL, você precisará conceder à conta de serviço o papel de desenvolvedor do Dataplex. Esse papel precisa ser concedido no projeto em que o dataplex lake está configurado.
Se a tarefa for um job do Spark SQL, você precisará de permissões de administrador do Cloud Storage no bucket em que os resultados serão gravados.
Para programar e executar as tarefas do Spark SQL e do Spark personalizadas, você precisa receber os papéis de IAM de leitor de metadados do Dataplex (
roles/dataplex.metadataReader
), visualizador do Dataplex (roles/dataplex.viewer
) e usuário do metastore do Dataproc (roles/metastore.metadataUser
) na sua conta de serviço.
Conceda ao usuário que envia o job o papel de usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço. Para mais instruções, consulte Gerenciar o acesso a contas de serviço.Conceda permissão à conta de serviço do lake do Dataplex para usar a conta de serviço. É possível encontrar a conta de serviço do lake do Dataplex na página Detalhes do lago do Console do Google Cloud.
Se o projeto que contém o data lake estiver diferente do projeto em que a tarefa será executada, conceda à conta de serviço do dataplex o papel de editor do Dataproc no projeto em que você executa a tarefa.
Coloque os artefatos de código necessários (arquivos de script JARs, Python ou SQL) ou arquivos arquivados (
.jar
,.tar
,.tar.gz
,.tgz
,.zip
) em um caminho do Cloud Storage.Verifique se a conta de serviço tem a permissão
storage.objects.get
necessária para o bucket do Cloud Storage que armazena esses artefatos de código.
Programar uma tarefa do Spark (Java ou Python)
Console
No console do Google Cloud, acesse a página do Dataplex:
Navegue até a visualização Process.
Clique em Create Task.
Em Criar tarefa personalizada do Spark, clique em Criar tarefa.
Escolha um lake do Dataplex.
Forneça um nome para a tarefa.
Crie um ID para a tarefa.
Na seção Configuração da tarefa, em Tipo, selecione Spark ou PySpark.
Insira os argumentos relevantes.
No campo Conta de serviço, insira uma conta de serviço de usuário com a qual sua tarefa personalizada do Spark 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 recursos e adicione outras configurações.
Clique em Criar.
gcloud
É possível programar uma tarefa do Spark (Java / Python) usando o comando da CLI gcloud. A tabela a seguir lista os parâmetros obrigatórios e opcionais a serem usados:
Parâmetro | Descrição |
---|---|
--lake |
O ID do lake para o recurso lake do serviço Dataplex. |
--location |
O local do serviço do Dataplex. |
--spark-main-class |
A classe principal do driver. O arquivo jar que contém a classe precisa estar no CLASSPATH padrão.
|
--spark-main-jar-file-uri |
O URI do Cloud Storage do arquivo jar que contém a classe principal.
|
--spark-archive-uris |
Opcional: URIs de arquivos do Cloud Storage a serem extraídos para o diretório de trabalho de cada executor. Tipos de arquivos compatíveis: .jar , .tar , .tar.gz , .tgz e .zip .
|
--spark-file-uris |
Opcional: URIs de arquivos do Cloud Storage a serem colocados no diretório de trabalho de cada executor. |
--batch-executors-count |
Opcional: o número total de executores de job. O valor padrão é 2. |
--batch-max-executors-count |
Opcional: o número máximo de executores configuráveis. O valor padrão é 1.000. Se batch-max-executors-count for maior que batch-executors-count , o Dataplex ativará o escalonamento automático.
|
--container-image-java-jars |
Opcional: uma lista de JARS Java para adicionar ao caminho de classe. A entrada válida inclui URIs do Cloud Storage para binários Jar. Por exemplo, gs://bucket-name/my/path/to/file.jar .
|
--container-image-properties |
Opcional: chaves de propriedade, especificadas no formato prefix:property .Por exemplo, core:hadoop.tmp.dir .Para mais informações, consulte Propriedades do cluster. |
--vpc-network-tags |
Opcional: uma lista de tags de rede a serem aplicadas ao job. |
--vpc-network-name |
Opcional: a rede de nuvem privada virtual em que o job é executado. Por padrão, o Dataplex usa a rede VPC Default no projeto. Você precisa usar apenas --vpc-network-name ou --vpc-sub-network-name .
|
--vpc-sub-network-name |
Opcional: a sub-rede VPC em que o job é executado.
Você só precisa usar --vpc-sub-network-name ou --vpc-network-name .
|
--trigger-type |
Tipo de acionador da tarefa especificada pelo usuário. Os valores precisam ser um destes:ON_DEMAND : a tarefa é executada uma vez logo após a criação.RECURRING : a tarefa é executada periodicamente em 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 01h30 UTC em 15 de janeiro de 2017. Se esse valor não for especificado, a tarefa será executada após ser enviada se o tipo de acionador for ON_DEMAND ou na programação especificada se o tipo for RECURRING .
|
--trigger-disabled |
Opcional: impede a execução da tarefa. Esse parâmetro não cancela as tarefas que já estão em execução, mas desativa temporariamente as tarefas RECURRING .
|
--trigger-max-retires |
Opcional: o número de novas tentativas antes de cancelar. Defina o valor como zero para nunca tentar repetir uma tarefa com falha. |
--trigger-schedule |
Programação do cron para executar tarefas periodicamente. |
--description |
Opcional: descrição da tarefa. |
--display-name |
Opcional: nome de exibição da tarefa. |
--labels |
Opcional: lista de pares de rótulos KEY=VALUE a serem adicionados. |
--execution-args |
Opcional: os argumentos a serem passados para a tarefa. Os argumentos podem ser uma combinação de pares de chave-valor. É possível passar uma lista separada por vírgulas de pares de chave-valor como argumentos de execução. Para transmitir argumentos posicionais, defina a chave como TASK_ARGS e o valor como uma string separada por vírgulas de todos os argumentos posicionais. Para usar um delimitador diferente de uma vírgula, consulte Escape.Se key-value e argumentos posicionais forem transmitidos
juntos, TASK_ARGS será transmitido como o último argumento.
|
--execution-service-account |
Conta de serviço a ser usada para executar uma tarefa. |
--max-job-execution-lifetime |
Opcional: a duração máxima antes da execução do job expirar. |
--container-image |
Opcional: imagem de contêiner personalizada para o ambiente de execução do job. Se não for especificado, será usada uma imagem de contêiner padrão. |
--kms-key |
Opcional: a chave do Cloud KMS a ser usada para criptografia 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 APIs Explorer.
Programar uma tarefa do Spark SQL
gcloud
Para programar uma tarefa do Spark SQL, execute o mesmo comando da CLI gcloud em Agendar uma tarefa do Spark (Java ou Python) com os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
--spark-sql-script |
O texto de consulta SQL. É necessário usar spark-sql-script ou spark-sql-script-file . |
--spark-sql-script-file |
Uma referência a um arquivo de consulta. Esse valor pode ser o URI do Cloud Storage do arquivo de consulta ou o caminho para o conteúdo do script SQL.
É necessário usar spark-sql-script ou spark-sql-script-file . |
--execution-args |
Para tarefas do Spark SQL, os seguintes argumentos são obrigatórios e precisam ser passados como argumentos posicionais:--output_location, <GCS uri of the output directory> --output_format, <output file format> .Os formatos compatíveis são csv, 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 APIs Explorer.
Monitore sua tarefa
Console
No console do Google Cloud, acesse a página do Dataplex:
Navegue até a visualização Process.
Na guia Tarefas, há uma lista de tarefas, filtradas por tipos de modelo de tarefa.
Na coluna Nome, clique em qualquer tarefa que você queira visualizar.
Clique no ID do job da tarefa que você quer visualizar.
A página do Dataproc é aberta no Console do Google Cloud e permite visualizar os detalhes de monitoramento e saída.
gcloud
A tabela a seguir lista os comandos da CLI gcloud para monitorar tarefas.
Ação | Comando da CLI gcloud |
---|---|
Como listar tarefas | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> |
Como visualizar detalhes da tarefa | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Como listar jobs de uma tarefa | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> |
Como visualizar detalhes do job | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
O Dataplex executa jobs no Dataproc sem servidor (lotes). Para ver os registros de execução de um job do Dataplex, siga estas etapas:
Consiga o ID do job sem servidor do Dataproc (lotes). Execute este comando:
gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
Veja os registros. Execute o comando a seguir, usando o ID do job recebido na execução do comando anterior:
gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
Gerenciar a programação
No console do Google Cloud, no Dataplex, é possível editar a programação de uma tarefa, excluir uma tarefa ou cancelar um job em andamento. A tabela a seguir lista os comandos da CLI gcloud para essas ações.
Ação | Comando da CLI gcloud |
---|---|
Editar programação da tarefa | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> |
Excluir uma tarefa | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> |
Cancelar um job | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> |
A seguir
- Consulte Modelos do Dataproc.
- Teste um modelo pré-criado para mover os dados de recursos do Cloud Storage para o BigQuery de modo incremental.
- Consulte Configurar alertas e notificações para tarefas do Dataplex.