使用模板进行注入

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

准备工作

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

启用 Dataflow API

模板:使用 JDBC 连接将数据导入 Dataplex

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

此流水线使用 JDBC 连接到关系数据库。如需额外说明 保护层,您还可以传入 Cloud KMS 密钥以及 以 Base64 编码的用户名、密码和连接字符串参数加密 替换为 Cloud KMS 密钥

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

模板参数

参数 说明
driverJars 使用英文逗号分隔 JDBC 驱动程序的 Cloud Storage 路径。
例如: gs://your-bucket/driver_jar1.jar, gs://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 输出资产 ID 存储的数据。对于 ID,请使用 projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code> 格式。您可以 outputAsset,在 Google Cloud 控制台中 Dataplex 资产的详细信息标签页。
username 用于 JDBC 连接的用户名。您可以将 作为纯文本或 Cloud KMS。
password 用于 JDBC 连接的密码。您可以将 作为纯文本或 Cloud KMS。
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

(可选)是否为 新建实体。此参数的默认值为 false

启用后,流水线将自动从源复制架构 发送到目标 Dataplex 实体, Dataplex Discovery 不会为其运行。如果您在源代码中管理了架构,请使用此标志。

仅适用于 Cloud Storage 目标位置。

运行模板

控制台

  1. 在 Google Cloud 控制台中,前往 Dataplex 页面:

    进入 Dataplex

  2. 转到进程视图。

  3. 点击创建任务

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

  5. 选择一个 Dataplex 数据湖。

  6. 提供任务名称。

  7. 选择用于执行任务的区域。

  8. 填写必需参数。

  9. 点击继续

gcloud

替换以下内容:

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 output asset ID

在 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\

REST API

替换以下内容:

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 output asset ID

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

后续步骤