c++mdl映射读写_DLA实现跨地域、跨实例的多AnalyticDB读写访问

1. 介绍

  • 实时数据仓库ADB(AnalyticDB)云产品:https://www.aliyun.com/product/ads
  • 数据湖分析服务DLA(Data Lake Analytics)云产品:https://www.aliyun.com/product/datalakeanalytics
  • 数据湖分析DLA简介:https://yq.aliyun.com/articles/635516

DLA作为数据湖数据分析场景中的中枢,能够对云上众多数据存储、数据库等系统进行融合数据分析,为用户提供统一操作视角,打通系统边界,对分析结果进行回流。

d2b14b86a7abc484aa204d057dbf5d31.png

目前已经支持的数据存储、数据库系统包括:

数据系统源(查询)目标(数据回流)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/Multicloud)场景下的数据融合分析。

本文重点介绍通过DLA实现跨地域、跨实例的多AnalyticDB读写访问。涉及的网络结构如下图所示,假设用户使用的DLA服务位于上海region。

651e811b44aac6cc032c9fc7d414d489.png

2. 场景示例

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实例

2104a0a1dc7eafc8fd96bc07ffe94f62.png

由于使用的是上海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_test`WITH 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实例

b8c481993314154a29ec816f3eb3c8dd.png

由于使用的是上海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_data`WITH 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_text`WITH 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 `TEXTFILE`LOCATION 'oss://oss-****/datasets/tpch/50x/text_date/nation_text';

更多关于DLA对OSS的数据查询,请参考:

https://yq.aliyun.com/articles/623282 (教程:使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集)

https://yq.aliyun.com/articles/623246 (教程:Data Lake Analytics + OSS数据文件格式处理大全)

https://yq.aliyun.com/articles/623247 (Data Lake Analytics中OSS LOCATION的使用说明)

https://yq.aliyun.com/articles/624151 (教程:如何使用Data Lake Analytics创建分区表)

https://yq.aliyun.com/articles/679405 (使用Data Lake Analytics快速分析OSS上的日志文件)

https://yq.aliyun.com/articles/672475 (教程:如何通过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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值