Este documento descreve como importar metadados de uma fonte externa para o Dataplex executando um pipeline de conectividade gerenciada no Workflows.
Para configurar um pipeline de conectividade gerenciada, crie um conector para sua fonte de dados. Em seguida, execute o pipeline no Workflows. O pipeline extrai metadados da sua fonte de dados e os importa para o Dataplex. Se necessário, o pipeline também cria grupos de entrada do Dataplex Catalog no projeto do Google Cloud .
Para mais informações sobre a conectividade gerenciada, consulte Visão geral da conectividade gerenciada.
Antes de começar
Antes de importar metadados, conclua as tarefas desta seção.
Criar um conector
Um conector extrai os metadados da sua origem de dados e gera um arquivo de importação de metadados que pode ser importado pelo Dataplex. O conector é uma imagem do Artifact Registry que pode ser executada no Dataproc sem servidor.
Crie um conector personalizado que extrai metadados da sua fonte externa.
Para conferir um exemplo de conector que pode ser usado como modelo de referência para criar seu próprio conector, consulte Desenvolver um conector personalizado para importação de metadados.
Configurar recursos do Google Cloud
-
Enable the Workflows, Dataproc, Cloud Storage, Dataplex, Secret Manager, Artifact Registry, and Cloud Scheduler APIs.
Se você não planeja executar o pipeline em uma programação, não é necessário ativar a API Cloud Scheduler.
Crie segredos no Secret Manager para armazenar as credenciais da sua fonte de dados externa.
Configure sua rede de nuvem privada virtual (VPC) para executar cargas de trabalho do Dataproc sem servidor para o Spark.
Crie um bucket do Cloud Storage para armazenar os arquivos de importação de metadados.
Crie os seguintes recursos do Dataplex Catalog:
Crie tipos de aspectos personalizados para as entradas que você quer importar.
Crie tipos de entrada personalizados para as entradas que você quer importar.
Funções exigidas
Uma conta de serviço representa a identidade de um fluxo de trabalho e determina quais permissões ele tem e quais recursos do Google Cloud ele pode acessar. Você precisa de uma conta de serviço para os Workflows (para executar o pipeline) e para o Dataproc sem servidor (para executar o conector).
É possível usar a conta de serviço padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com
) ou criar sua própria conta de serviço
(ou contas) para executar o pipeline de conectividade gerenciada.
Console
No console do Google Cloud , acesse a página IAM.
Selecione o projeto para importar os metadados.
Clique em
Conceder acesso e insira o endereço de e-mail da conta de serviço.Atribua os seguintes papéis à conta de serviço:
- Gravador de registros
- Proprietário de grupos de entradas do Dataplex
- Proprietário do job de metadados do Dataplex
- Editor do catálogo do Dataplex
- Editor do Dataproc
- Worker do Dataproc
- Acessador de secret do Secret Manager: no secret que armazena as credenciais da sua fonte de dados.
- Usuário de objetos do Storage: no bucket do Cloud Storage
- Leitor do Artifact Registry: no repositório do Artifact Registry que contém a imagem do conector.
- Usuário da conta de serviço: se você usar contas de serviço diferentes, conceda esse papel à conta de serviço que executa os Workflows na conta de serviço que executa os jobs em lote do Dataproc sem servidor.
- Workflows Invoker: se você quiser programar o pipeline
Salve as alterações.
gcloud
Conceda papéis à conta de serviço. Execute os comandos a seguir:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.entryGroupOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.metadataJobOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.catalogEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.editor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.worker
Substitua:
-
PROJECT_ID
: o nome do projeto de destino do Google Cloud para importar os metadados. SERVICE_ACCOUNT_ID
: a conta de serviço, comomy-service-account@my-project.iam.gserviceaccount.com
.
-
Conceda à conta de serviço os seguintes papéis no nível do recurso:
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/secretmanager.secretaccessor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/storage.objectUser \ --condition=resource.name.startsWith('projects/_/buckets/BUCKET_ID') gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=REPOSITORY_LOCATION \ --member=SERVICE_ACCOUNT_ID} \ --role=roles/artifactregistry.reader
Substitua:
SECRET_ID
: o ID do segredo que armazena as credenciais da sua fonte de dados. Ele usa o formatoprojects/PROJECT_ID/secrets/SECRET_ID
.BUCKET_ID
: o nome do bucket do Cloud Storage.REPOSITORY
: o repositório do Artifact Registry que contém a imagem do conector.REPOSITORY_LOCATION
: o Google Cloud local em que o repositório está hospedado.
Conceda à conta de serviço que executa Workflows o papel
roles/iam.serviceAccountUser
na conta de serviço que executa os jobs em lote do Dataproc sem servidor. É necessário conceder essa função mesmo que você use a mesma conta de serviço para os Workflows e o Dataproc Serverless.gcloud iam service-accounts add-iam-policy-binding \ serviceAccount:SERVICE_ACCOUNT_ID \ --member='SERVICE_ACCOUNT_ID' \ --role='roles/iam.serviceAccountUser'
Se você usar contas de serviço diferentes, o valor da flag
--member
será a conta de serviço que executa os jobs em lote do Dataproc Serverless.Se você quiser programar o pipeline, conceda à conta de serviço o seguinte papel:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="SERVICE_ACCOUNT_ID" \ --role=roles/workflows.invoker
Importar metadados
Para importar metadados, crie e execute um fluxo de trabalho que execute o pipeline de conectividade gerenciado. Também é possível criar uma programação para executar o pipeline.
Console
Crie o fluxo de trabalho. Forneça as seguintes informações:
- Conta de serviço: a conta de serviço que você configurou na seção Papéis necessários deste documento.
Criptografia: selecione gerenciada pelo Google com tecnologia do Google Cloud.
Definir fluxo de trabalho: forneça o seguinte arquivo de definição:
Para executar o pipeline sob demanda, execute o fluxo de trabalho.
Forneça os seguintes argumentos de execução:
Substitua:
-
PROJECT_ID
: o nome do projeto de destino do Google Cloud para importar os metadados. -
LOCATION_ID
: o local do Google Cloud , onde os trabalhos de importação de dados e sem servidor do Dataproc serão executados e os metadados serão importados. -
ENTRY_GROUP_ID
: o ID do grupo de entrada para importar metadados. O ID do grupo de entrada pode conter letras minúsculas, números e hífens.O nome completo do recurso desse grupo de entradas é
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
. -
CREATE_ENTRY_GROUP_BOOLEAN
: se você quiser que o pipeline crie o grupo de entrada se ele ainda não existir no projeto, defina esse valor comotrue
. -
BUCKET_ID
: o nome do bucket do Cloud Storage para armazenar o arquivo de importação de metadados gerado pelo conector. Cada execução de fluxo de trabalho cria uma nova pasta. -
SERVICE_ACCOUNT_ID
: a conta de serviço que você configurou na seção Papéis obrigatórios deste documento. A conta de serviço executa o conector no Dataproc Serverless. -
ADDITIONAL_CONNECTOR_ARGUMENTS
: uma lista de argumentos adicionais para transmitir ao conector. Para conferir exemplos, consulte Desenvolver um conector personalizado para importação de metadados. Coloque cada argumento entre aspas duplas e separe-os com vírgulas. -
CONTAINER_IMAGE
: a imagem de contêiner personalizada do conector hospedado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entrada no escopo para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo Google Cloud para onde você importa os metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspectos que estão no escopo para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo Google Cloud para onde você importa os metadados ouglobal
. -
Opcional: para o argumento
NETWORK_TAGS
, forneça uma lista de tags de rede. -
Opcional: para o argumento
NETWORK_URI
, forneça o URI da rede VPC que se conecta à fonte de dados. Se você fornecer uma rede, omita o argumento de sub-rede. -
Opcional: para o argumento
SUBNETWORK_URI
, forneça o URI da sub-rede que se conecta à fonte de dados. Se você fornecer uma sub-rede, omita o argumento de rede.
Dependendo da quantidade de metadados importados, o pipeline pode levar vários minutos ou mais para ser executado. Para mais informações sobre como conferir o progresso, consulte Acessar os resultados da execução do fluxo de trabalho.
Depois que o pipeline terminar de ser executado, você poderá pesquisar os metadados importados no Dataplex Catalog.
-
Opcional: se você quiser executar o pipeline em uma programação, crie uma programação usando o Cloud Scheduler. Forneça as seguintes informações:
- Frequência: uma expressão unix-cron que define a programação para executar o pipeline.
- Argumento de fluxo de trabalho: os argumentos de execução do conector, conforme descrito na etapa anterior.
- Conta de serviço: a conta de serviço. A conta de serviço gerencia o programador.
gcloud
Salve a seguinte definição de carga de trabalho como um arquivo YAML:
Defina variáveis do Bash, crie o fluxo de trabalho e, se quiser, crie uma programação para executar o pipeline:
Substitua:
-
PROJECT_ID
: o nome do projeto de destino do Google Cloud para importar os metadados. -
LOCATION_ID
: o local do Google Cloud , onde os trabalhos de importação de dados e sem servidor do Dataproc serão executados e os metadados serão importados. -
SERVICE_ACCOUNT_ID
: a conta de serviço que você configurou na seção Papéis obrigatórios deste documento. WORKFLOW_DEFINITION_FILE
: o caminho para o arquivo YAML de definição do fluxo de trabalho.WORKFLOW_NAME
: o nome do fluxo de trabalho.WORKFLOW_ARGUMENTS
: os argumentos de execução a serem transmitidos ao conector. Os argumentos estão no formato JSON:No Cloud Scheduler, as aspas duplas dentro da string entre aspas são escapadas usando barras invertidas (\). Por exemplo:
--message-body="{\"argument\": \"{\\\"key\\\": \\\"value\\\"}\"}"
.Substitua:
-
ENTRY_GROUP_ID
: o ID do grupo de entrada para importar metadados. O ID do grupo de entrada pode conter letras minúsculas, números e hífens.O nome completo do recurso desse grupo de entradas é
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
. -
CREATE_ENTRY_GROUP_BOOLEAN
: se você quiser que o pipeline crie o grupo de entrada se ele ainda não existir no projeto, defina esse valor comotrue
. -
BUCKET_ID
: o nome do bucket do Cloud Storage para armazenar o arquivo de importação de metadados gerado pelo conector. Cada execução de fluxo de trabalho cria uma nova pasta. -
ADDITIONAL_CONNECTOR_ARGUMENTS
: uma lista de argumentos adicionais para transmitir ao conector. Para conferir exemplos, consulte Desenvolver um conector personalizado para importação de metadados. -
CONTAINER_IMAGE
: a imagem de contêiner personalizada do conector hospedado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entrada no escopo para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo Google Cloud para onde você importa os metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspectos que estão no escopo para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo Google Cloud para onde você importa os metadados ouglobal
. -
Opcional: para o argumento
NETWORK_TAGS
, forneça uma lista de tags de rede. -
Opcional: para o argumento
NETWORK_URI
, forneça o URI da rede VPC que se conecta à fonte de dados. Se você fornecer uma rede, omita o argumento de sub-rede. -
Opcional: para o argumento
SUBNETWORK_URI
, forneça o URI da sub-rede que se conecta à fonte de dados. Se você fornecer uma sub-rede, omita o argumento de rede.
-
CRON_SCHEDULE_EXPRESSION
: uma expressão cron que define a programação para executar o pipeline. Por exemplo, para executar a programação à meia-noite todos os dias, use a expressão0 0 * * *
.
-
Para executar o pipeline sob demanda, execute o fluxo de trabalho:
Os argumentos do fluxo de trabalho estão no formato JSON, mas não são escapados.
Dependendo da quantidade de metadados importados, a execução do fluxo de trabalho pode levar vários minutos ou mais. Para mais informações sobre como ver o progresso, consulte Acessar os resultados da execução do fluxo de trabalho.
Depois que o pipeline terminar de ser executado, você poderá pesquisar os metadados importados no Dataplex Catalog.
Terraform
Clone o repositório
cloud-dataplex
.O repositório inclui os seguintes arquivos do Terraform:
main.tf
: define os recursos do Google Cloud a serem criados.variables.tf
: declara as variáveis.byo-connector.tfvars
: define as variáveis do pipeline de conectividade gerenciada.
Edite o arquivo
.tfvars
para substituir os marcadores de posição pelas informações do conector.Substitua:
-
PROJECT_ID
: o nome do projeto de destino do Google Cloud para importar os metadados. -
LOCATION_ID
: o local do Google Cloud alvo, onde os trabalhos de importação de dados e sem servidor do Dataproc serão executados e os metadados serão importados. -
SERVICE_ACCOUNT_ID
: a conta de serviço que você configurou na seção Papéis obrigatórios deste documento. -
CRON_SCHEDULE_EXPRESSION
: uma expressão cron que define a programação para executar o pipeline. Por exemplo, para executar a programação à meia-noite todos os dias, use a expressão0 0 * * *
. -
ENTRY_GROUP_ID
: o ID do grupo de entrada para importar metadados. O ID do grupo de entrada pode conter letras minúsculas, números e hífens.O nome completo do recurso desse grupo de entradas é
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
. -
CREATE_ENTRY_GROUP_BOOLEAN
: se você quiser que o pipeline crie o grupo de entrada se ele ainda não existir no projeto, defina esse valor comotrue
. -
BUCKET_ID
: o nome do bucket do Cloud Storage para armazenar o arquivo de importação de metadados gerado pelo conector. Cada execução de fluxo de trabalho cria uma nova pasta. -
ADDITIONAL_CONNECTOR_ARGUMENTS
: uma lista de argumentos adicionais para transmitir ao conector. Para conferir exemplos, consulte Desenvolver um conector personalizado para importação de metadados. Coloque cada argumento entre aspas duplas e separe-os com vírgulas. -
CONTAINER_IMAGE
: a imagem de contêiner personalizada do conector hospedado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entrada no escopo para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo Google Cloud para onde você importa os metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspectos que estão no escopo para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo Google Cloud para onde você importa os metadados ouglobal
. -
Opcional: para o argumento
NETWORK_TAGS
, forneça uma lista de tags de rede. -
Opcional: para o argumento
NETWORK_URI
, forneça o URI da rede VPC que se conecta à fonte de dados. Se você fornecer uma rede, omita o argumento de sub-rede. -
Opcional: para o argumento
SUBNETWORK_URI
, forneça o URI da sub-rede que se conecta à fonte de dados. Se você fornecer uma sub-rede, omita o argumento de rede.
-
Inicialize o Terraform:
terraform init
Valide o Terraform com seu arquivo
.tfvars
:terraform plan --var-file=CONNECTOR_VARIABLES_FILE.tfvars
Substitua
CONNECTOR_VARIABLES_FILE
pelo nome do arquivo de definições de variáveis.Implante o Terraform com seu arquivo
.tfvars
:terraform apply --var-file=CONNECTOR_VARIABLES_FILE.tfvars
O Terraform cria um fluxo de trabalho e um job do Cloud Scheduler no projeto especificado. O Workflows executa o pipeline na programação especificada.
Dependendo da quantidade de metadados importados, a execução do fluxo de trabalho pode levar vários minutos ou mais. Para mais informações sobre como ver o progresso, consulte Acessar os resultados da execução do fluxo de trabalho.
Depois que o pipeline terminar de ser executado, você poderá pesquisar os metadados importados no Dataplex Catalog.
Ver registros do job
Use o Cloud Logging para conferir os registros de um pipeline de conectividade gerenciado. O payload de registro inclui um link para os registros do job em lote do Dataproc sem servidor e do job de importação de metadados, conforme for relevante. Para mais informações, consulte Conferir os registros do fluxo de trabalho.
Solução de problemas
Use as seguintes sugestões de solução de problemas:
- Configure o nível de registro do job de importação para o job de metadados para usar o registro de nível de depuração em vez do registro de nível de informação.
- Analise os registros do job em lote do Dataproc sem servidor (para execuções do conector) e do job de importação de metadados. Para mais informações, consulte Consultar registros do Dataproc Serverless para Spark e Consultar registros de jobs de metadados.
- Se uma entrada não puder ser importada usando o pipeline e a mensagem de erro não fornecer informações suficientes, tente criar uma entrada personalizada com os mesmos detalhes em um grupo de entrada de teste. Para mais informações, consulte Criar uma entrada personalizada.