Ingerir usando modelos

O Knowledge Catalog (antigo Dataplex Universal Catalog) oferece modelos (com tecnologia do Dataflow) para realizar tarefas comuns de processamento de dados, como ingestão de dados, processamento e gerenciamento do ciclo de vida dos dados. Este guia descreve como configurar e executar um modelo que ingere dados usando uma conexão JDBC.

Antes de começar

Os modelos de tarefas do Knowledge Catalog são baseados no Dataflow. Antes de usar os modelos, ative as APIs Dataflow.

Ativar as APIs Dataflow

Modelo: ingerir dados no Knowledge Catalog usando uma conexão JDBC

O modelo de ingestão JDBC do Knowledge Catalog copia dados de um banco de dados relacional para um destino de recurso do Knowledge Catalog. O recurso do Knowledge Catalog pode ser um recurso do Cloud Storage ou do BigQuery.

Esse pipeline usa o JDBC para se conectar ao banco de dados relacional. Para ter uma camada extra de proteção, é possível transmitir uma chave do Cloud KMS com um nome de usuário, senha e parâmetros da string de conexão criptografados em Base64 com a chave do Cloud KMS.

O modelo processa de maneira transparente os diferentes tipos de recursos. Os dados armazenados no recurso do Cloud Storage são particionados no estilo Hive, e a descoberta do Knowledge Catalog Discovery os disponibiliza automaticamente como uma tabela no Data Catalog (descontinuado), no BigQuery (tabela externa) ou em uma instância anexada do Dataproc Metastore.

Parâmetros do modelo

Parâmetro Descrição
driverJars Usando vírgulas, separe os caminhos do Cloud Storage para drivers JDBC.
Por exemplo, gs://your-bucket/driver_jar1.jar, gs://your-bucket/driver_jar2.jar.
connectionURL A string de conexão de URL para acessar a fonte JDBC.
Por exemplo, jdbc:mysql://some-host:3306/sampledb.
É possível transmitir o URL de conexão como texto simples ou como uma string codificada em Base64 criptografada pelo Cloud KMS.
driverClassName O nome da classe do driver do JDBC.
Por exemplo, com.mysql.jdbc.Driver.
connectionProperties A string de propriedades a ser usada para a conexão JDBC.
Por exemplo, unicode=true&characterEncoding=UTF-8.
query A consulta a ser executada na fonte para extrair os dados.
Por exemplo, select * from sampledb.sample_table.
outputAsset O código do recurso de saída do Knowledge Catalog em que os resultados são armazenados. Para o ID, use o formato projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code>. É possível encontrar o outputAsset no Google Cloud console, na guia Detalhes do recurso do Knowledge Catalog.
username O nome do usuário a ser usado para a conexão JDBC. É possível transmitir o nome de usuário como texto simples ou como uma string codificada em Base64 criptografada pelo Cloud KMS.
password A senha a ser usada para a conexão JDBC. É possível transmitir a senha como texto simples ou como uma string codificada em Base64 criptografada pelo Cloud KMS.
outputTable O local da tabela do BigQuery ou o nome da pasta principal do Cloud Storage em que a saída será gravada. Se for um local de tabela do BigQuery o esquema da tabela precisará corresponder ao esquema da consulta de origem e estar no formato some-project-id:somedataset.sometable. Se for uma pasta principal do Cloud Storage, forneça o nome dela.
KMSEncryptionKey Opcional: se você fornecer o KMSEncryptionKey parâmetro, verifique se password, username, e connectionURL estão criptografados pelo Cloud KMS. Criptografe esses parâmetros usando o endpoint de criptografia da API Cloud KMS. Por exemplo, projects/your-project/locations/global/keyRings/test/cryptoKeys/quickstart.
writeDisposition Opcional: a estratégia a ser usada se o arquivo/tabela de destino existir. Os formatos aceitos são WRITE_APPEND (as linhas serão anexadas se a tabela existir), WRITE_TRUNCATE (a tabela/arquivo será substituído), WRITE_EMPTY (a tabela de saída precisa estar vazia/o arquivo de saída não pode existir) e SKIP (pule a gravação no arquivo se ele existir). Para BigQuery, os formatos permitidos são: WRITE_APPEND, WRITE_TRUNCATE, WRITE_EMPTY. Para o Cloud Storage, os formatos permitidos são: SKIP, WRITE_TRUNCATE, WRITE_EMPTY. Padrão: WRITE_EMPTY.
partitioningScheme Opcional: o esquema de partição ao gravar o arquivo. O valor padrão desse parâmetro é DAILY. Outros valores para o parâmetro podem ser MONTHLY ou HOURLY.
partitionColumn Opcional: a coluna de partição em que a partição é baseada. O tipo de coluna precisa estar no formato timestamp/date. Se o partitionColumn parâmetro não for fornecido, os dados não serão particionados.
fileFormat Opcional: o formato do arquivo de saída no Cloud Storage. Os arquivos são compactados com a configuração padrão de compactação Snappy. O valor padrão desse parâmetro é PARQUET. Outro valor para o parâmetro é AVRO.
updateDataplexMetadata

Opcional: se os metadados do Knowledge Catalog serão atualizados para as entidades recém-criadas. O valor padrão desse parâmetro é false.

Se ativado, o pipeline vai copiar automaticamente o esquema da origem para as entidades de destino do Knowledge Catalog, e a descoberta automatizada do Knowledge Catalog não será executada para elas. Use essa flag nos casos em que você gerenciou o esquema na origem.

Aceito apenas para o destino do Cloud Storage.

Executar o modelo

Console

  1. No Google Cloud console, acesse a página Processo do Knowledge Catalog:

    Acessar o processo

  2. Clique em Criar tarefa.

  3. Em Ingerir JDBC no Knowledge Catalog, clique em Criar tarefa.

  4. Escolha um lake do Knowledge Catalog.

  5. Forneça um nome de tarefa.

  6. Escolha uma região para a execução da tarefa.

  7. Preencha os parâmetros obrigatórios.

  8. Clique em Continuar.

gcloud

No shell ou no terminal, execute o seguinte modelo:

gcloud beta dataflow flex-template run JOB_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--template-file-gcs-location=gs://dataflow-templates-REGION_NAME/latest/flex/Dataplex_JDBC_Ingestion_Preview \
--parameters \
driverJars=DRIVER_JARS,\
connectionUrl=CONNECTION_URL,\
driverClassName=DRIVER_CLASS_NAME,\
connectionProperties=CONNECTION_PROPERTIES,\
query=QUERY\
outputAsset=OUTPUT_ASSET\

Substitua:

JOB_NAME: a job name of your choice
PROJECT_ID: your template project ID
DRIVER_JARS: path to your JDBC drivers
CONNECTION_URL: your JDBC connection URL string
DRIVER_CLASS_NAME: your JDBC driver class name
CONNECTION_PROPERTIES: your JDBC connection property string
QUERY: your JDBC source SQL query
OUTPUT_ASSET: your Knowledge Catalog output asset ID

API REST

Envie uma solicitação POST HTTP:

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION_NAME/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "driverJars": "DRIVER_JARS",
          "connectionUrl": "CONNECTION_URL",
          "driverClassName": "DRIVER_CLASS_NAME",
          "connectionProperties": "CONNECTION_PROPERTIES",
          "query": "QUERY"
          "outputAsset": "OUTPUT_ASSET"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-REGION_NAME/latest/flex/Dataplex_JDBC_Ingestion_Preview",
   }
}

Substitua:

PROJECT_ID: your template project ID
REGION_NAME: region in which to run the job
JOB_NAME: a job name of your choice
DRIVER_JARS: path to your JDBC drivers
CONNECTION_URL: your JDBC connection URL string
DRIVER_CLASS_NAME: your JDBC driver class name
CONNECTION_PROPERTIES: your JDBC connection property string
QUERY: your JDBC source SQL query
OUTPUT_ASSET: your Knowledge Catalog output asset ID

A seguir