使用模板注入

Dataplex Universal Catalog 提供模板(由 Dataflow 支持)来执行常见的数据处理任务,例如数据注入、处理和管理数据生命周期。本指南介绍了如何配置和运行使用 JDBC 连接注入数据的模板。

准备工作

Dataplex Universal Catalog 任务模板由 Dataflow 提供支持。在使用模板之前,请启用 Dataflow API。

启用 Dataflow API

模板:使用 JDBC 连接将数据注入 Dataplex Universal Catalog

Dataplex Universal Catalog JDBC 注入模板会将数据从关系型数据库复制到 Dataplex Universal Catalog 资产目标。Dataplex Universal Catalog 资产可以是 Cloud Storage 资产,也可以是 BigQuery 资产。

此流水线使用 JDBC 连接到关系型数据库。为了增加一层额外的保护,您还可以在传入使用 Cloud KMS 密钥加密的 Base64 编码用户名、密码和连接字符串参数的同时,传入该 Cloud KMS 密钥。

该模板以透明方式处理不同的资产类型。存储在 Cloud Storage 资产中的数据采用 Hive 样式分区,Dataplex Universal Catalog 发现功能可自动将其作为 Data Catalog(已弃用)中的表、BigQuery(外部表)或附加的 Dataproc Metastore 实例提供。

模板参数

参数 说明
driverJars 使用 JDBC 驱动程序的 Cloud Storage 路径(以英文逗号分隔)。
例如,gs://your-bucket/driver_jar1.jargs://your-bucket/driver_jar2.jar.
connectionURL 用于连接到 JDBC 来源的网址连接字符串。
例如,jdbc:mysql://some-host:3306/sampledb
您可以将连接网址作为纯文本或作为由 Cloud KMS 加密的 Base64 编码字符串传递。
driverClassName JDBC 驱动程序类名称。
例如,com.mysql.jdbc.Driver
connectionProperties 用于 JDBC 连接的属性字符串。
例如,unicode=true&characterEncoding=UTF-8
query 要在提取数据的来源上执行的查询。
例如,select * from sampledb.sample_table
outputAsset 存储结果的 Dataplex Universal Catalog 输出资产 ID。对于此 ID,请使用 projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code> 格式。您可以在 Google Cloud 控制台的 Dataplex Universal Catalog 资产详情标签页中找到 outputAsset
username 用于 JDBC 连接的用户名。您可以将用户名作为纯文本或作为由 Cloud KMS 加密的 Base64 编码字符串传递。
password 用于 JDBC 连接的密码。您可以将密码作为纯文本或作为由 Cloud KMS 加密的 Base64 编码字符串传递。
outputTable 要将输出写入的 BigQuery 表位置或 Cloud Storage 顶级文件夹名称。如果是 BigQuery 表位置,则该表的架构必须与源查询架构匹配,并且应采用 some-project-id:somedataset.sometable 格式。如果是 Cloud Storage 顶级文件夹,请提供顶级文件夹名称。
KMSEncryptionKey 可选:如果您提供 KMSEncryptionKey 参数,请确保 passwordusernameconnectionURL 已通过 Cloud KMS 加密。使用 Cloud KMS API 加密端点对这些参数进行加密。例如,projects/your-project/locations/global/keyRings/test/cryptoKeys/quickstart
writeDisposition 可选:目标文件/表存在时采用的策略。支持的格式包括 WRITE_APPEND(如果表存在,则将行附加到该表)、WRITE_TRUNCATE(表/文件会被覆盖)、WRITE_EMPTY(输出表必须为空/输出文件不应存在)和 SKIP(如果文件存在,则跳过向文件写入数据)。对于 BigQuery,允许的格式包括:WRITE_APPEND WRITE_TRUNCATEWRITE_EMPTY。对于 Cloud Storage,允许的格式包括:SKIPWRITE_TRUNCATEWRITE_EMPTY。默认值:WRITE_EMPTY
partitioningScheme 可选:写入文件时的分区方案。此参数的默认值是 DAILY。此参数的其他值可以是 MONTHLYHOURLY
partitionColumn 可选:分区所基于的分区列。列类型必须采用 timestamp/date 格式。如果未提供 partitionColumn 参数,则系统不会对数据进行分区。
fileFormat 可选:Cloud Storage 中的输出文件格式。文件采用默认设置 Snappy 压缩进行压缩。此参数的默认值是 PARQUET。此参数的其他值是 AVRO
updateDataplexMetadata

可选:是否更新新创建的实体的 Dataplex Universal Catalog 元数据。此参数的默认值是 false

如果启用,则流水线会将架构从来源自动复制到目标 Dataplex Universal Catalog 实体,并且系统不会针对这些实体运行自动 Dataplex Universal Catalog 发现。如果来源处有托管式架构,请使用此标志。

仅在 Cloud Storage 目标位置受支持。

运行模板

控制台

  1. 在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 流程页面。

    前往流程

  2. 点击创建任务

  3. 将 JDBC 注入 Dataplex 下,点击创建任务

  4. 选择一个 Dataplex Universal Catalog 数据湖。

  5. 提供任务名称。

  6. 选择任务执行区域。

  7. 填写必需参数。

  8. 点击继续

gcloud

在 shell 或终端中,运行以下模板:

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\

替换以下内容:

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 Dataplex Universal Catalog output asset ID

REST API

提交 HTTP POST 请求:

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",
   }
}

替换以下内容:

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 Dataplex Universal Catalog output asset ID

后续步骤