使用模板进行提取

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 Discovery 会自动将其作为表在 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 输出资产 ID。对于 ID,请使用 projects/your-project/locations/<loc>/lakes/<lake-name>/zones/<zone-name>/assets/<asset-name></code> 格式。您可以在 Google Cloud 控制台中的 Dataplex 资产的详情标签页中找到 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 元数据。此参数的默认值为 false

如果启用此功能,流水线将自动将架构从源复制到目标 Dataplex 实体,并且不会为这些实体运行自动化 Dataplex 发现功能。如果您在源代码中管理了架构,请使用此标志。

仅适用于 Cloud Storage 目标位置。

运行模板

控制台

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

    进入 Dataplex

  2. 前往流程视图。

  3. 点击创建任务

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

  5. 选择一个 Dataplex 数据湖。

  6. 提供任务名称。

  7. 选择任务执行区域。

  8. 填写必需参数。

  9. 点击继续

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

后续步骤