Este documento descreve como importar metadados de uma fonte de terceiros para Dataplex executando um pipeline de conectividade gerenciado no Workflows.
Para configurar um pipeline de conectividade gerenciado, você cria um conector para sua fonte de dados. Depois, você vai executar o pipeline no Workflows. O O pipeline extrai metadados da fonte de dados e, em seguida, importa esses metadados no Dataplex. Se necessário, o pipeline também cria Grupos de entradas do catálogo do Dataplex no seu 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 dos seus dados e gera um arquivo de importação de metadados que pode ser importado pelo o 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.
Por exemplo, um conector que pode ser usado como modelo de referência para criar seu próprio conector, consulte Desenvolver um conector personalizado para a 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 secrets no Secret Manager para armazenar as credenciais da sua fonte de dados de terceiros.
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 catálogo do Dataplex:
Crie tipos de aspecto 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 pode acessar. Você precisa de uma conta de serviço para o Workflows (para executar 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, abra 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 de catálogo do Dataplex
- Editor do Dataproc
- Worker do Dataproc
- Acesso de secret do Secret Manager: no secret que armazena as credenciais da 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 fluxos de trabalho na conta de serviço que executa os jobs em lote do Dataproc sem servidor.
- Invocador de fluxos de trabalho: se 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 do Google Cloud de destino 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 Cloud Storage. do Google Cloud.REPOSITORY
: o repositório do Artifact Registry que contém a imagem do conector.REPOSITORY_LOCATION
: o Google Cloud local onde o repositório está hospedado.
Conceda à conta de serviço que executa fluxos de trabalho o papel
roles/iam.serviceAccountUser
na conta de serviço que executa os jobs em lote do Dataproc sem servidor. Você precisa conceder esse papel, mesmo que você use a mesma conta de serviço para Workflows e Dataproc sem servidor.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 sinalização
--member
é a conta de serviço que executa o Dataproc jobs em lote.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 executa o pipeline de conectividade. Também é possível criar uma programação 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 Chave de criptografia gerenciada pelo Google.
Definir fluxo de trabalho: forneça o seguinte arquivo de definição:
Para executar o pipeline sob demanda, executar o fluxo de trabalho.
Forneça os seguintes argumentos do ambiente de execução:
Substitua:
-
PROJECT_ID
: o nome do Google Cloud de destino. em que os metadados serão importados. -
LOCATION_ID
: o local de destino do Google Cloud. em que serão executados os jobs de importação de metadados e sem servidor do Dataproc. e os metadados serão importados. -
ENTRY_GROUP_ID
: o ID do grupo de entradas a ser importado. os 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, configure 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 nos 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 a serem transmitidos ao conector. Para conferir exemplos, consulte Desenvolver um conector personalizado para importação de metadados. Coloque cada argumento entre aspas aspas e separe os argumentos com vírgulas. -
CONTAINER_IMAGE
: a imagem do contêiner personalizada do de rede hospedado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entrada que estão no escopo. para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo local do Google Cloud para importação de metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspecto 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 local do Google Cloud para importação de 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 a 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 network.
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.
Após a execução do pipeline, será possível pesquise os metadados importados no Catálogo do Dataplex.
-
Opcional: se você quiser executar o pipeline de acordo com uma programação, criar uma programação usando 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 do fluxo de trabalho: os argumentos do ambiente de execução para o conector, conforme descritas 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, opcionalmente, crie uma programação para executar o pipeline:
Substitua:
-
PROJECT_ID
: o nome do Google Cloud de destino. em que os metadados serão importados. -
LOCATION_ID
: o local de destino do Google Cloud. em que serão executados os jobs de importação de metadados e sem servidor do Dataproc. e os metadados serão importados. -
SERVICE_ACCOUNT_ID
: a conta de serviço que você configurou nos 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 têm escape 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, configure comotrue
. -
BUCKET_ID
: o nome 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 outros a serem passados para o conector. Para conferir exemplos, consulte Desenvolver um conector personalizado para importação de metadados. -
CONTAINER_IMAGE
: a imagem do contêiner personalizada do conector hospedado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entrada que estão no escopo. para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo local do Google Cloud para importação de metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspecto 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 local do Google Cloud para importação de 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 a 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 todos os dias à meia-noite, 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 conferir o progresso, consultar Acesse os resultados da execução do fluxo de trabalho.
Após a execução do pipeline, será possível pesquise os metadados importados no Catálogo do Dataplex.
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 seu pipeline de conectividade gerenciada.
Edite o arquivo
.tfvars
para substituir os marcadores de posição pelas informações. do seu conector.Substitua:
-
PROJECT_ID
: o nome do Google Cloud de destino. em que os metadados serão importados. -
LOCATION_ID
: o local de destino do Google Cloud. em que serão executados os jobs de importação de metadados e sem servidor do Dataproc. e os metadados serão importados. -
SERVICE_ACCOUNT_ID
: a conta de serviço que você configurou nos 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, configure comotrue
. -
BUCKET_ID
: o nome 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 a serem transmitidos ao conector. Para conferir exemplos, consulte Desenvolver um conector personalizado para importação de metadados. Coloque cada argumento entre aspas aspas e separe os argumentos com vírgulas. -
CONTAINER_IMAGE
: a imagem do contêiner personalizada do de rede hospedado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entrada que estão no escopo. para importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
precisa ser o mesmo local do Google Cloud para importação de metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspecto 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 local do Google Cloud para importação de 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 a 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 do projeto especificado. O Workflows executa o pipeline na programação especificada.
Dependendo da quantidade de metadados importada, o fluxo de trabalho pode levar vários minutos ou mais para ser executado. Para mais informações sobre como ver o progresso, consulte Acessar os resultados da execução do fluxo de trabalho.
Após a execução do pipeline, será possível pesquise os metadados importados no Catálogo do Dataplex.
Ver registros do job
Use o Cloud Logging para conferir os registros de um pipeline de conectividade gerenciado. O registro inclui um link para os registros da instância do Dataproc o job em lote e o job de importação de metadados, conforme relevante. Para mais informações, consulte Veja 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 e o 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 não for possível importar uma entrada usando o pipeline e a mensagem de erro não fornecer informações suficientes, tente criar uma entrada personalizada com os mesmos em um grupo de entrada de teste. Para mais informações, consulte Criar uma entrada personalizada.
A seguir
- Visão geral do Dataplex Catalog
- Desenvolver um conector personalizado para a importação de metadados