Dataplex Universal Catalog 提供模板(由 Dataflow 支持)来执行常见的数据处理任务,例如数据注入、处理和管理数据生命周期。本指南介绍了如何配置和运行使用 JDBC 连接注入数据的模板。
准备工作
Dataplex Universal Catalog 任务模板由 Dataflow 提供支持。在使用模板之前,请启用 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.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 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 参数,请确保 password 、username 和 connectionURL 已通过 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_TRUNCATE 、WRITE_EMPTY 。对于 Cloud Storage,允许的格式包括:SKIP 、WRITE_TRUNCATE 、WRITE_EMPTY 。默认值:WRITE_EMPTY 。
|
partitioningScheme |
可选:写入文件时的分区方案。此参数的默认值是 DAILY 。此参数的其他值可以是 MONTHLY 或 HOURLY 。 |
partitionColumn |
可选:分区所基于的分区列。列类型必须采用 timestamp/date 格式。如果未提供 partitionColumn 参数,则系统不会对数据进行分区。 |
fileFormat |
可选:Cloud Storage 中的输出文件格式。文件采用默认设置 Snappy 压缩进行压缩。此参数的默认值是 PARQUET 。此参数的其他值是 AVRO 。 |
updateDataplexMetadata |
可选:是否更新新创建的实体的 Dataplex Universal Catalog 元数据。此参数的默认值是 如果启用,则流水线会将架构从来源自动复制到目标 Dataplex Universal Catalog 实体,并且系统不会针对这些实体运行自动 Dataplex Universal Catalog 发现。如果来源处有托管式架构,请使用此标志。 仅在 Cloud Storage 目标位置受支持。 |
运行模板
控制台
在 Google Cloud 控制台中,前往 Dataplex Universal Catalog 流程页面。
点击创建任务。
在将 JDBC 注入 Dataplex 下,点击创建任务。
选择一个 Dataplex Universal Catalog 数据湖。
提供任务名称。
选择任务执行区域。
填写必需参数。
点击继续。
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