Este documento descreve como importar metadados de uma origem de terceiros para o catálogo universal do Dataplex através da execução de um pipeline de conetividade gerido nos Workflows.
Para configurar um pipeline de conetividade gerido, cria um conetor para a sua origem de dados. Em seguida, executa o pipeline nos fluxos de trabalho. O pipeline extrai metadados da sua origem de dados e, em seguida, importa os metadados para o catálogo universal do Dataplex. Se necessário, o pipeline também cria grupos de entradas do catálogo universal do Dataplex no seu Google Cloud projeto.
Para mais informações sobre a conetividade gerida, consulte o artigo Vista geral da conetividade gerida.
Antes de começar
Antes de importar metadados, conclua as tarefas nesta secção.
Crie um conetor
Um conetor extrai os metadados da sua origem de dados e gera um ficheiro de importação de metadados que pode ser importado pelo Dataplex Universal Catalog. O conetor é uma imagem do Artifact Registry que pode ser executada no Google Cloud Serverless para Apache Spark.
Crie um conector personalizado que extraia metadados da sua origem de terceiros.
Para ver um exemplo de conetor que pode usar como modelo de referência para criar o seu próprio conetor, consulte o artigo Desenvolva um conetor personalizado para a importação de metadados.
Configure Google Cloud recursos
-
Enable the Workflows, Dataproc, Cloud Storage, Dataplex, Secret Manager, Artifact Registry, and Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Se não planeia executar o pipeline de acordo com um horário, não precisa de ativar a API Cloud Scheduler.
Crie segredos no Secret Manager para armazenar as credenciais da sua origem de dados de terceiros.
Configure a sua rede de nuvem virtual privada (VPC) para executar cargas de trabalho do Serverless para Apache Spark.
Crie um contentor do Cloud Storage para armazenar os ficheiros de importação de metadados.
Crie os seguintes recursos do Dataplex Universal Catalog:
Crie tipos de aspetos personalizados para as entradas que quer importar.
Crie tipos de entradas personalizados para as entradas que quer importar.
Funções necessárias
Uma conta de serviço representa a identidade de um fluxo de trabalho e determina as autorizações que o fluxo de trabalho tem e os recursos aos quais pode aceder. Google Cloud Precisa de uma conta de serviço para os fluxos de trabalho (para executar o pipeline) e para o Serverless para Apache Spark (para executar o conector).
Pode usar a conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com
) ou criar a sua própria conta de serviço (ou contas) para executar o pipeline de conetividade gerido.
Consola
Na Google Cloud consola, aceda à página IAM.
Selecione o projeto para o qual quer importar metadados.
Clique em
Conceder acesso e, de seguida, introduza o endereço de email da conta de serviço.Atribua as seguintes funções à conta de serviço:
- Escritor de registos
- Dataplex Entry Group Owner
- Dataplex Metadata Job Owner
- Editor do catálogo do Dataplex
- Editor do Dataproc
- Dataproc Worker
- Secret Manager Secret Accessor: no secret que armazena as credenciais da sua origem de dados
- Utilizador de objetos de armazenamento: no contentor do Cloud Storage
- Leitor do Artifact Registry: no repositório do Artifact Registry que contém a imagem do conetor
- Utilizador da conta de serviço: se usar contas de serviço diferentes, conceda esta função à conta de serviço que executa os fluxos de trabalho na conta de serviço que executa os trabalhos em lote do Serverless para Apache Spark
- Workflows Invoker: se quiser agendar a pipeline
Guarde as alterações.
gcloud
Conceda funções à conta de serviço. Execute os seguintes comandos:
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 o seguinte:
-
PROJECT_ID
: o nome do projeto Google Cloud de destino para o qual os metadados vão ser importados. SERVICE_ACCOUNT_ID
: a conta de serviço, comomy-service-account@my-project.iam.gserviceaccount.com
.
-
Conceda à conta de serviço as seguintes funções ao 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 o seguinte:
SECRET_ID
: o ID do segredo que armazena as credenciais da sua origem de dados. Usa o formatoprojects/PROJECT_ID/secrets/SECRET_ID
.BUCKET_ID
: o nome do contentor do Cloud Storage.REPOSITORY
: o repositório do Artifact Registry que contém a imagem do conetor.REPOSITORY_LOCATION
: a Google Cloud localização onde o repositório está alojado.
Conceda à conta de serviço que executa os fluxos de trabalho a função de
roles/iam.serviceAccountUser
na conta de serviço que executa as tarefas em lote do Serverless para Apache Spark. Tem de conceder esta função mesmo que use a mesma conta de serviço para o Workflows e o Serverless para Apache Spark.gcloud iam service-accounts add-iam-policy-binding \ serviceAccount:SERVICE_ACCOUNT_ID \ --member='SERVICE_ACCOUNT_ID' \ --role='roles/iam.serviceAccountUser'
Se usar contas de serviço diferentes, o valor da flag
--member
é a conta de serviço que executa os trabalhos em lote do Serverless para Apache Spark.Se quiser agendar o pipeline, conceda à conta de serviço a seguinte função:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="SERVICE_ACCOUNT_ID" \ --role=roles/workflows.invoker
Importe metadados
Para importar metadados, crie e, em seguida, execute um fluxo de trabalho que execute o pipeline de conetividade gerido. Opcionalmente, também pode criar um agendamento para executar o pipeline.
Consola
Crie o fluxo de trabalho. Forneça as seguintes informações:
- Conta de serviço: a conta de serviço que configurou na secção Funções necessárias deste documento.
Encriptação: selecione Google-managed encryption key.
Definir fluxo de trabalho: faculte o seguinte ficheiro de definição:
Para executar o pipeline a pedido, execute o fluxo de trabalho.
Forneça os seguintes argumentos de tempo de execução:
Substitua o seguinte:
-
PROJECT_ID
: o nome do projeto Google Cloud de destino para o qual os metadados vão ser importados. -
LOCATION_ID
: a localização Google Cloud de destino onde os trabalhos de importação de metadados e do Serverless para Apache Spark vão ser executados e os metadados vão ser importados. -
ENTRY_GROUP_ID
: o ID do grupo de entradas para o qual importar os metadados. O ID do grupo de entradas pode conter letras minúsculas, números e hífens.O nome do recurso completo deste grupo de entradas é
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
. -
CREATE_ENTRY_GROUP_BOOLEAN
: se quiser que o pipeline crie o grupo de entradas se ainda não existir no seu projeto, defina este valor comotrue
. -
BUCKET_ID
: o nome do contentor do Cloud Storage para armazenar o ficheiro de importação de metadados gerado pelo conector. Cada execução do fluxo de trabalho cria uma nova pasta. -
SERVICE_ACCOUNT_ID
: a conta de serviço que configurou na secção Funções necessárias deste documento. A conta de serviço executa o conector no Serverless para Apache Spark. -
ADDITIONAL_CONNECTOR_ARGUMENTS
: uma lista de argumentos adicionais a transmitir ao conector. Para ver exemplos, consulte o artigo Desenvolva um conector personalizado para a importação de metadados. Coloque cada argumento entre aspas duplas e separe os argumentos com vírgulas. -
CONTAINER_IMAGE
: a imagem do contentor personalizada do conetor alojado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entradas que estão no âmbito da importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
tem de ser a mesma localização Google Cloud para a qual importa metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspetos no âmbito da importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
. OLOCATION_ID
tem de ser a mesma localização Google Cloud para a qual importa metadados ouglobal
. -
Opcional: para o argumento
NETWORK_TAGS
, forneça uma lista de etiquetas de rede. -
Opcional: para o argumento
NETWORK_URI
, indique o URI da rede VPC que se liga à origem de dados. Se fornecer uma rede, omita o argumento subnetwork. -
Opcional: para o argumento
SUBNETWORK_URI
, indique o URI da sub-rede que se liga à origem de dados. Se fornecer uma sub-rede, omita o argumento de rede.
Consoante a quantidade de metadados que importar, o pipeline pode demorar vários minutos ou mais a ser executado. Para mais informações sobre como ver o progresso, consulte o artigo Aceda aos resultados da execução do fluxo de trabalho.
Após a conclusão da execução do pipeline, pode pesquisar os metadados importados no catálogo universal do Dataplex.
-
Opcional: se quiser executar o pipeline de acordo com um agendamento, crie um agendamento através do Cloud Scheduler. Forneça as seguintes informações:
- Frequência: uma expressão unix-cron que define o agendamento para executar o pipeline.
- Argumento do fluxo de trabalho: os argumentos de tempo de execução do conector, conforme descrito no passo anterior.
- Conta de serviço: a conta de serviço. A conta de serviço gere o programador.
gcloud
Guarde a seguinte definição de carga de trabalho como um ficheiro YAML:
Defina variáveis Bash, crie o fluxo de trabalho e, opcionalmente, crie um agendamento para executar o pipeline:
Substitua o seguinte:
-
PROJECT_ID
: o nome do projeto Google Cloud de destino para o qual os metadados vão ser importados. -
LOCATION_ID
: a localização Google Cloud de destino onde os trabalhos de importação de metadados e do Serverless para Apache Spark vão ser executados e os metadados vão ser importados. -
SERVICE_ACCOUNT_ID
: a conta de serviço que configurou na secção Funções necessárias deste documento. WORKFLOW_DEFINITION_FILE
: o caminho para o ficheiro YAML de definição do fluxo de trabalho.WORKFLOW_NAME
: o nome do fluxo de trabalho.WORKFLOW_ARGUMENTS
: os argumentos de tempo de execução a transmitir ao conector. Os argumentos estão no formato JSON:Para o Cloud Scheduler, as aspas duplas na string entre aspas têm carateres de escape com barras invertidas (\). Por exemplo:
--message-body="{\"argument\": \"{\\\"key\\\": \\\"value\\\"}\"}"
.Substitua o seguinte:
-
ENTRY_GROUP_ID
: o ID do grupo de entradas para o qual importar os metadados. O ID do grupo de entradas pode conter letras minúsculas, números e hífens.O nome do recurso completo deste grupo de entradas é
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
. -
CREATE_ENTRY_GROUP_BOOLEAN
: se quiser que o pipeline crie o grupo de entradas se ainda não existir no seu projeto, defina este valor comotrue
. -
BUCKET_ID
: o nome do contentor do Cloud Storage para armazenar o ficheiro de importação de metadados gerado pelo conector. Cada execução do fluxo de trabalho cria uma nova pasta. -
ADDITIONAL_CONNECTOR_ARGUMENTS
: uma lista de argumentos adicionais a transmitir ao conector. Para ver exemplos, consulte o artigo Desenvolva um conector personalizado para a importação de metadados. -
CONTAINER_IMAGE
: a imagem do contentor personalizada do conetor alojado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entradas que estão no âmbito da importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
tem de ser a mesma localização Google Cloud para a qual importa metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspetos no âmbito da importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
. OLOCATION_ID
tem de ser a mesma localização Google Cloud para a qual importa metadados ouglobal
. -
Opcional: para o argumento
NETWORK_TAGS
, forneça uma lista de etiquetas de rede. -
Opcional: para o argumento
NETWORK_URI
, indique o URI da rede VPC que se liga à origem de dados. Se fornecer uma rede, omita o argumento subnetwork. -
Opcional: para o argumento
SUBNETWORK_URI
, indique o URI da sub-rede que se liga à origem de dados. Se fornecer uma sub-rede, omita o argumento de rede.
-
CRON_SCHEDULE_EXPRESSION
: uma expressão cron que define o horário de execução do pipeline. Por exemplo, para executar a programação à meia-noite todos os dias, use a expressão0 0 * * *
.
-
Para executar o pipeline a pedido, execute o fluxo de trabalho:
Os argumentos do fluxo de trabalho estão no formato JSON, mas não têm carateres de escape.
Consoante a quantidade de metadados que importar, o fluxo de trabalho pode demorar vários minutos ou mais a ser executado. Para mais informações sobre como ver o progresso, consulte o artigo Aceda aos resultados da execução do fluxo de trabalho.
Após a conclusão da execução do pipeline, pode pesquisar os metadados importados no catálogo universal do Dataplex.
Terraform
Clone o repositório
cloud-dataplex
.O repositório inclui os seguintes ficheiros do Terraform:
main.tf
: define os Google Cloud recursos a criar.variables.tf
: declara as variáveis.byo-connector.tfvars
: define as variáveis para o seu pipeline de conetividade gerido.
Edite o ficheiro
.tfvars
para substituir os marcadores de posição pelas informações do seu conetor.Substitua o seguinte:
-
PROJECT_ID
: o nome do projeto Google Cloud de destino para o qual os metadados vão ser importados. -
LOCATION_ID
: a localização Google Cloud de destino onde os trabalhos de importação de metadados e do Serverless para Apache Spark vão ser executados e os metadados vão ser importados. -
SERVICE_ACCOUNT_ID
: a conta de serviço que configurou na secção Funções necessárias deste documento. -
CRON_SCHEDULE_EXPRESSION
: uma expressão cron que define o horário de execução do 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 entradas para o qual importar os metadados. O ID do grupo de entradas pode conter letras minúsculas, números e hífens.O nome do recurso completo deste grupo de entradas é
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
. -
CREATE_ENTRY_GROUP_BOOLEAN
: se quiser que o pipeline crie o grupo de entradas se ainda não existir no seu projeto, defina este valor comotrue
. -
BUCKET_ID
: o nome do contentor do Cloud Storage para armazenar o ficheiro de importação de metadados gerado pelo conector. Cada execução do fluxo de trabalho cria uma nova pasta. -
ADDITIONAL_CONNECTOR_ARGUMENTS
: uma lista de argumentos adicionais a transmitir ao conector. Para ver exemplos, consulte o artigo Desenvolva um conector personalizado para a importação de metadados. Coloque cada argumento entre aspas duplas e separe os argumentos com vírgulas. -
CONTAINER_IMAGE
: a imagem do contentor personalizada do conetor alojado no Artifact Registry. -
ENTRY_TYPES
: uma lista de tipos de entradas que estão no âmbito da importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
. OLOCATION_ID
tem de ser a mesma localização Google Cloud para a qual importa metadados ouglobal
. -
ASPECT_TYPES
: uma lista de tipos de aspetos no âmbito da importação, no formatoprojects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
. OLOCATION_ID
tem de ser a mesma localização Google Cloud para a qual importa metadados ouglobal
. -
Opcional: para o argumento
NETWORK_TAGS
, forneça uma lista de etiquetas de rede. -
Opcional: para o argumento
NETWORK_URI
, indique o URI da rede VPC que se liga à origem de dados. Se fornecer uma rede, omita o argumento subnetwork. -
Opcional: para o argumento
SUBNETWORK_URI
, indique o URI da sub-rede que se liga à origem de dados. Se fornecer uma sub-rede, omita o argumento de rede.
-
Inicialize o Terraform:
terraform init
Valide o Terraform com o seu ficheiro
.tfvars
:terraform plan --var-file=CONNECTOR_VARIABLES_FILE.tfvars
Substitua
CONNECTOR_VARIABLES_FILE
pelo nome do ficheiro de definições de variáveis.Implemente o Terraform com o seu ficheiro
.tfvars
:terraform apply --var-file=CONNECTOR_VARIABLES_FILE.tfvars
O Terraform cria um fluxo de trabalho e uma tarefa do Cloud Scheduler no projeto especificado. Os fluxos de trabalho executam o pipeline na programação especificada.
Consoante a quantidade de metadados que importar, o fluxo de trabalho pode demorar vários minutos ou mais a ser executado. Para mais informações sobre como ver o progresso, consulte o artigo Aceda aos resultados da execução do fluxo de trabalho.
Após a conclusão da execução do pipeline, pode pesquisar os metadados importados no catálogo universal do Dataplex.
Veja registos de tarefas
Use o Cloud Logging para ver os registos de um pipeline de conetividade gerido. A carga útil do registo inclui um link para os registos da tarefa em lote do Serverless for Apache Spark e da tarefa de importação de metadados, conforme relevante. Para mais informações, consulte o artigo Veja os registos do fluxo de trabalho.
Resolução de problemas
Use as seguintes sugestões de resolução de problemas:
- Configure o nível de registo da tarefa de importação para a tarefa de metadados de modo a usar o registo ao nível de depuração em vez do registo ao nível de informações.
- Reveja os registos da tarefa em lote do Serverless para Apache Spark (para execuções do conetor) e da tarefa de importação de metadados. Para mais informações, consulte os artigos Consultar registos do Apache Spark sem servidor e Consultar registos de tarefas de metadados.
- Se não for possível importar uma entrada através do pipeline e a mensagem de erro não fornecer informações suficientes, experimente criar uma entrada personalizada com os mesmos detalhes num grupo de entradas de teste. Para mais informações, consulte o artigo Crie uma entrada personalizada.
O que se segue?
- Acerca da gestão de metadados no Dataplex Universal Catalog
- Desenvolva um conector personalizado para a importação de metadados