Dataplex 提供模板(由 Dataflow 提供支持),用于执行数据提取、处理和管理数据生命周期等常见数据处理任务。本指南将介绍如何配置和运行 使用 JDBC 连接注入数据的模板。
准备工作
Dataplex 任务模板由 Dataflow 提供支持。在使用模板之前,请先启用 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 参数,
请确保您的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 实体, Dataplex Discovery 不会为其运行。如果您在源代码中管理了架构,请使用此标志。 仅适用于 Cloud Storage 目标位置。 |
运行模板
控制台
在 Google Cloud 控制台中,前往 Dataplex 页面:
转到进程视图。
点击创建任务。
在将 JDBC 注入 Dataplex 下,点击创建任务。
选择一个 Dataplex 数据湖。
提供任务名称。
选择用于执行任务的区域。
填写必需参数。
点击继续。
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", } }