DLA实现跨地域、跨实例的多AnalyticDB读写访问

24次阅读

共计 5556 个字符,预计需要花费 14 分钟才能阅读完成。

介绍
实时数据仓库 ADB(AnalyticDB)云产品:https://www.aliyun.com/produc… 数据湖分析服务 DLA(Data Lake Analytics)云产品:https://www.aliyun.com/produc… 数据湖分析 DLA 简介:https://yq.aliyun.com/article…DLA 作为数据湖数据分析场景中的中枢,能够对云上众多数据存储、数据库等系统进行融合数据分析,为用户提供统一操作视角,打通系统边界,对分析结果进行回流。

目前已经支持的数据存储、数据库系统包括:
数据系统 源(查询)目标(数据回流)OSS 支持 支持 Table Store 支持 支持 AnalyticDB 支持 支持 RDS for MySQL 支持 支持用户自建 MySQL 支持 支持 RDS for PostgreSQL 支持 支持用户自建 PostgreSQL 支持 支持 RDS for SQL Server 支持 支持用户自建 SQL Server 支持 支持云数据库 Redis 支持 暂不支持用户自建 Redis 支持 暂不支持云数据库 MongoDB 支持 暂不支持用户自建 MongoDB 支持 暂不支持 PolarDB 支持 支持通过弹性网络技术,目前 DLA 支持了跨地域(region)的数据访问能力,上述的多个数据源同时通过 DLA 也具备了跨多个地域的融合分析能力,能够帮助用户实现多云(Multicloud: https://en.wikipedia.org/wiki…)场景下的数据融合分析。
本文重点介绍通过 DLA 实现跨地域、跨实例的多 AnalyticDB 读写访问。涉及的网络结构如下图所示,假设用户使用的 DLA 服务位于上海 region。

场景示例
ADB 中的数据假设 ADB 的两个实例中,都已经存在如下两张表,对应 ADB 的 DDL 为:
CREATE TABLE customer (c_custkey int COMMENT ”, c_name varchar COMMENT ”, c_address varchar COMMENT ”, c_nationkey int COMMENT ”, c_phone varchar COMMENT ”, c_acctbal double COMMENT ”, c_mktsegment varchar COMMENT ”, c_comment varchar COMMENT ”, PRIMARY KEY (C_CUSTKEY,C_NATIONKEY))PARTITION BY HASH KEY (C_CUSTKEY) PARTITION NUM 32TABLEGROUP tpch_50x_groupOPTIONS (UPDATETYPE=’realtime’)COMMENT ”;
CREATE DIMENSION TABLE nation (n_nationkey int COMMENT ”, n_name varchar COMMENT ”, n_regionkey int COMMENT ”, n_comment varchar COMMENT ”, PRIMARY KEY (N_NATIONKEY))OPTIONS (UPDATETYPE=’realtime’)COMMENT ”; 其中 customer 表有 7,500,000 条数据,nation 表有 25 条数据。
DLA 映射北京 region 的 ADB 实例

由于使用的是上海 region 的 DLA 服务,所以,需要通过公网访问该北京 region 的 ADB 实例的经典网络地址:ads-dla-test-f508cb23.cn-beijing-1.ads.aliyuncs.com:10006(跨 region 访问不能走 VPC,网络不通)
连接上海 region 的 DLA 服务,执行如下建库和建表命令,映射指向北京 region ADB 实例和 customer 表。
CREATE DATABASE beijing_public_ads_dla_testWITH DBPROPERTIES (
catalog = ‘ads’,
location = ‘jdbc:mysql://ads-dla-test-f508cb23.cn-beijing-1.ads.aliyuncs.com:10006/ads_dla_test’,
instance = ‘ads_dla_test’,
user = ‘L*T’,
password = ‘****’
)COMMENT ”;
CREATE EXTERNAL TABLE IF NOT EXISTS customer (
`c_custkey` INT NULL COMMENT ”,
`c_name` STRING NULL COMMENT ”,
`c_address` STRING NULL COMMENT ”,
`c_nationkey` INT NULL COMMENT ”,
`c_phone` STRING NULL COMMENT ”,
`c_acctbal` DOUBLE NULL COMMENT ”,
`c_mktsegment` STRING NULL COMMENT ”,
`c_comment` STRING NULL COMMENT ”
);
CREATE EXTERNAL TABLE IF NOT EXISTS nation (n_nationkey int COMMENT ”, n_name varchar COMMENT ”, n_regionkey int COMMENT ”, n_comment varchar COMMENT ”);DLA 映射上海 region 的 ADB 实例

由于使用的是上海 region 的 DLA 服务,所以,可以通过 VPC 网络地址访问同上海 region 的 ADB 实例:dla-data-4d5443bf-vpc.cn-shanghai-1.ads.aliyuncs.com:10001
注意:为 ADB 生成的 VPC URL 必须是为
连接上海 region 的 DLA 服务,执行如下建库和建表命令,映射指向上海 region ADB 实例和 customer 表。
CREATE DATABASE shanghai_vpc_dla_dataWITH DBPROPERTIES (
catalog = ‘ads’,
location = ‘jdbc:mysql://dla-data-4d5443bf-vpc.cn-shanghai-1.ads.aliyuncs.com:10001/dla_data’,
instance = ‘dla_data’,
user = ‘L*M’,
password = ‘****’
)COMMENT ”;
CREATE EXTERNAL TABLE IF NOT EXISTS customer (c_custkey INT NULL COMMENT ”,c_name STRING NULL COMMENT ”,c_address STRING NULL COMMENT ”,c_nationkey INT NULL COMMENT ”,c_phone STRING NULL COMMENT ”,c_acctbal DOUBLE NULL COMMENT ”,c_mktsegment STRING NULL COMMENT ”,c_comment STRING NULL COMMENT ”);
CREATE EXTERNAL TABLE IF NOT EXISTS nation (n_nationkey int COMMENT ”, n_name varchar COMMENT ”, n_regionkey int COMMENT ”, n_comment varchar COMMENT ”); 查询如下是按照国家统计客户的数量的查询示例,由于上述两个 ADB 实例中的两张表的数据相同,所以通过 DLA 查询,下面四个查询的结果是相同的。查询是通过上海 region 的 DLA 执行的:
查询 1:北京 region ADB 的 customer 表 join 北京 region ADB 的 nation 表;SELECT a.c_nationkey, b.n_name, count(*) as cntFROM beijing_public_ads_dla_test.customer aJOIN beijing_public_ads_dla_test.nation b ON a.c_nationkey = b.n_nationkeyGROUP BY a.c_nationkey, b.n_nameORDER BY cnt DESC; 查询 2:上海 region ADB 的 customer 表 join 上海 region ADB 的 nation 表;SELECT a.c_nationkey, b.n_name, count(*) as cntFROM shanghai_vpc_dla_data.customer aJOIN shanghai_vpc_dla_data.nation b ON a.c_nationkey = b.n_nationkeyGROUP BY a.c_nationkey, b.n_nameORDER BY cnt DESC; 查询 3:上海 region ADB 的 customer 表 join 北京 region ADB 的 nation 表;SELECT a.c_nationkey, b.n_name, count(*) as cntFROM shanghai_vpc_dla_data.customer aJOIN beijing_public_ads_dla_test.nation b ON a.c_nationkey = b.n_nationkeyGROUP BY a.c_nationkey, b.n_nameORDER BY cnt DESC; 查询 4:北京 region ADB 的 customer 表 join 上海 region ADB 的 nation 表;SELECT a.c_nationkey, b.n_name, count(*) as cntFROM beijing_public_ads_dla_test.customer aJOIN shanghai_vpc_dla_data.nation b ON a.c_nationkey = b.n_nationkeyGROUP BY a.c_nationkey, b.n_nameORDER BY cnt DESC; 写入通过 DLA 执行 INSERT from SELECT,将其他数据源的查询结果写入 ADB 数据源中。
在 DLA 中执行如下语句,指向上海 region 的 OSS bucket 建库、建表:
CREATE DATABASE tpch_50x_textWITH DBPROPERTIES (
catalog = ‘oss’,
location = ‘oss://oss-****/datasets/tpch/50x/text_date/’
)COMMENT ”;
CREATE EXTERNAL TABLE tpch_50x_text.nation (
`n_nationkey` int,
`n_name` string,
`n_regionkey` int,
`n_comment` string
)ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘|’
STORED AS TEXTFILELOCATION ‘oss://oss-**/datasets/tpch/50x/text_date/nation_text’; 更多关于 DLA 对 OSS 的数据查询,请参考:https://yq.aliyun.com/article… (教程:使用 Data Lake Analytics + OSS 分析 CSV 格式的 TPC- H 数据集)https://yq.aliyun.com/article… (教程:Data Lake Analytics + OSS 数据文件格式处理大全)https://yq.aliyun.com/article… (Data Lake Analytics 中 OSS LOCATION 的使用说明)https://yq.aliyun.com/article… (教程:如何使用 Data Lake Analytics 创建分区表)https://yq.aliyun.com/article… (使用 Data Lake Analytics 快速分析 OSS 上的日志文件)https://yq.aliyun.com/article… (教程:如何通过 DLA 实现数据文件格式转换)
如下示例场景:
通过上海 region DLA 服务,将上海 region 的 OSS bucket 数据写入上海 region 的 ADB 中:INSERT INTO shanghai_vpc_dla_data.nation SELECT * FROM tpch_50x_text.nation; 通过上海 region DLA 服务,将上海 region 的 OSS bucket 数据写入北京 region 的 ADB 中:(由于需要跨 region 的公网访问,建议该模式下数据量不要太大)INSERT INTO beijing_public_ads_dla_test.nation SELECT * FROM tpch_50x_text.nation; 通过上海 region DLA 服务,将上海 region 的 ADB 数据写入北京 region 的 ADB 中:(由于需要跨 region 的公网访问,建议该模式下数据量不要太大)INSERT INTO beijing_public_ads_dla_test.nation SELECT * FROM shanghai_vpc_dla_data.nation; 通过上海 region DLA 服务,将北京 region 的 ADB 数据写入上海 region 的 ADB 中:(由于需要跨 region 的公网访问,建议该模式下数据量不要太大)INSERT INTO shanghai_vpc_dla_data.nation SELECT * FROM beijing_public_ads_dla_test.nation;
本文作者:julian.zhou
阅读原文
本文为云栖社区原创内容,未经允许不得转载。

正文完
 0