DLA实现跨地域、跨实例的多AnalyticDB读写访问
實(shí)時數(shù)據(jù)倉庫ADB(AnalyticDB)云產(chǎn)品:https://www.aliyun.com/produc...
數(shù)據(jù)湖分析服務(wù)DLA(Data Lake Analytics)云產(chǎn)品:https://www.aliyun.com/produc...
數(shù)據(jù)湖分析DLA簡介:https://yq.aliyun.com/article...
DLA作為數(shù)據(jù)湖數(shù)據(jù)分析場景中的中樞,能夠?qū)υ粕媳姸鄶?shù)據(jù)存儲、數(shù)據(jù)庫等系統(tǒng)進(jìn)行融合數(shù)據(jù)分析,為用戶提供統(tǒng)一操作視角,打通系統(tǒng)邊界,對分析結(jié)果進(jìn)行回流。
目前已經(jīng)支持的數(shù)據(jù)存儲、數(shù)據(jù)庫系統(tǒng)包括:
數(shù)據(jù)系統(tǒng) 源(查詢) 目標(biāo)(數(shù)據(jù)回流)
OSS 支持 支持
Table Store 支持 支持
AnalyticDB 支持 支持
RDS for MySQL 支持 支持
用戶自建MySQL 支持 支持
RDS for PostgreSQL 支持 支持
用戶自建PostgreSQL 支持 支持
RDS for SQL Server 支持 支持
用戶自建SQL Server 支持 支持
云數(shù)據(jù)庫Redis 支持 暫不支持
用戶自建Redis 支持 暫不支持
云數(shù)據(jù)庫MongoDB 支持 暫不支持
用戶自建MongoDB 支持 暫不支持
PolarDB 支持 支持
通過彈性網(wǎng)絡(luò)技術(shù),目前DLA支持了跨地域(region)的數(shù)據(jù)訪問能力,上述的多個數(shù)據(jù)源同時通過DLA也具備了跨多個地域的融合分析能力,能夠幫助用戶實(shí)現(xiàn)多云(Multicloud: https://en.wikipedia.org/wiki...)場景下的數(shù)據(jù)融合分析。
本文重點(diǎn)介紹通過DLA實(shí)現(xiàn)跨地域、跨實(shí)例的多AnalyticDB讀寫訪問。涉及的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,假設(shè)用戶使用的DLA服務(wù)位于上海region。
ADB中的數(shù)據(jù)
假設(shè)ADB的兩個實(shí)例中,都已經(jīng)存在如下兩張表,對應(yīng)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 32
TABLEGROUP tpch_50x_group
OPTIONS (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條數(shù)據(jù),nation表有25條數(shù)據(jù)。
DLA映射北京region的ADB實(shí)例
由于使用的是上海region的DLA服務(wù),所以,需要通過公網(wǎng)訪問該北京region的ADB實(shí)例的經(jīng)典網(wǎng)絡(luò)地址:ads-dla-test-f508cb23.cn-beijing-1.ads.aliyuncs.com:10006(跨region訪問不能走VPC,網(wǎng)絡(luò)不通)
連接上海region的DLA服務(wù),執(zhí)行如下建庫和建表命令,映射指向北京region ADB實(shí)例和customer表。
CREATE DATABASE beijing_public_ads_dla_test
WITH DBPROPERTIES (
)
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實(shí)例
由于使用的是上海region的DLA服務(wù),所以,可以通過VPC網(wǎng)絡(luò)地址訪問同上海region的ADB實(shí)例:dla-data-4d5443bf-vpc.cn-shanghai-1.ads.aliyuncs.com:10001
注意:為ADB生成的VPC URL必須是為
連接上海region的DLA服務(wù),執(zhí)行如下建庫和建表命令,映射指向上海region ADB實(shí)例和customer表。
CREATE DATABASE shanghai_vpc_dla_data
WITH DBPROPERTIES (
)
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 ''
);
查詢
如下是按照國家統(tǒng)計客戶的數(shù)量的查詢示例,由于上述兩個ADB實(shí)例中的兩張表的數(shù)據(jù)相同,所以通過DLA查詢,下面四個查詢的結(jié)果是相同的。查詢是通過上海region的DLA執(zhí)行的:
查詢1:北京region ADB的customer表join北京region ADB的nation表;
SELECT a.c_nationkey, b.n_name, count(*) as cnt
FROM beijing_public_ads_dla_test.customer a
JOIN beijing_public_ads_dla_test.nation b ON a.c_nationkey = b.n_nationkey
GROUP BY a.c_nationkey, b.n_name
ORDER BY cnt DESC;
查詢2:上海region ADB的customer表join上海region ADB的nation表;
SELECT a.c_nationkey, b.n_name, count(*) as cnt
FROM shanghai_vpc_dla_data.customer a
JOIN shanghai_vpc_dla_data.nation b ON a.c_nationkey = b.n_nationkey
GROUP BY a.c_nationkey, b.n_name
ORDER BY cnt DESC;
查詢3:上海region ADB的customer表join北京region ADB的nation表;
SELECT a.c_nationkey, b.n_name, count(*) as cnt
FROM shanghai_vpc_dla_data.customer a
JOIN beijing_public_ads_dla_test.nation b ON a.c_nationkey = b.n_nationkey
GROUP BY a.c_nationkey, b.n_name
ORDER BY cnt DESC;
查詢4:北京region ADB的customer表join上海region ADB的nation表;
SELECT a.c_nationkey, b.n_name, count(*) as cnt
FROM beijing_public_ads_dla_test.customer a
JOIN shanghai_vpc_dla_data.nation b ON a.c_nationkey = b.n_nationkey
GROUP BY a.c_nationkey, b.n_name
ORDER BY cnt DESC;
寫入
通過DLA執(zhí)行INSERT from SELECT,將其他數(shù)據(jù)源的查詢結(jié)果寫入ADB數(shù)據(jù)源中。
在DLA中執(zhí)行如下語句,指向上海region的OSS bucket建庫、建表:
CREATE DATABASE tpch_50x_text
WITH DBPROPERTIES (
)
COMMENT '';
CREATE EXTERNAL TABLE tpch_50x_text.nation (
`n_nationkey` int, `n_name` string, `n_regionkey` int, `n_comment` string)
ROW FORMAT DELIMITED
STORED AS TEXTFILE
LOCATION 'oss://oss-**/datasets/tpch/50x/text_date/nation_text';
更多關(guān)于DLA對OSS的數(shù)據(jù)查詢,請參考:
https://yq.aliyun.com/article... (教程:使用Data Lake Analytics + OSS分析CSV格式的TPC-H數(shù)據(jù)集)
https://yq.aliyun.com/article... (教程:Data Lake Analytics + OSS數(shù)據(jù)文件格式處理大全)
https://yq.aliyun.com/article... (Data Lake Analytics中OSS LOCATION的使用說明)
https://yq.aliyun.com/article... (教程:如何使用Data Lake Analytics創(chuàng)建分區(qū)表)
https://yq.aliyun.com/article... (使用Data Lake Analytics快速分析OSS上的日志文件)
https://yq.aliyun.com/article... (教程:如何通過DLA實(shí)現(xiàn)數(shù)據(jù)文件格式轉(zhuǎn)換)
如下示例場景:
通過上海region DLA服務(wù),將上海region的OSS bucket數(shù)據(jù)寫入上海region的ADB中:
INSERT INTO shanghai_vpc_dla_data.nation
SELECT * FROM tpch_50x_text.nation;
通過上海region DLA服務(wù),將上海region的OSS bucket數(shù)據(jù)寫入北京region的ADB中:(由于需要跨region的公網(wǎng)訪問,建議該模式下數(shù)據(jù)量不要太大)
INSERT INTO beijing_public_ads_dla_test.nation
SELECT * FROM tpch_50x_text.nation;
通過上海region DLA服務(wù),將上海region的ADB數(shù)據(jù)寫入北京region的ADB中:(由于需要跨region的公網(wǎng)訪問,建議該模式下數(shù)據(jù)量不要太大)
INSERT INTO beijing_public_ads_dla_test.nation
SELECT * FROM shanghai_vpc_dla_data.nation;
通過上海region DLA服務(wù),將北京region的ADB數(shù)據(jù)寫入上海region的ADB中:(由于需要跨region的公網(wǎng)訪問,建議該模式下數(shù)據(jù)量不要太大)
INSERT INTO shanghai_vpc_dla_data.nation
SELECT * FROM beijing_public_ads_dla_test.nation;
本文作者:julian.zhou
閱讀原文
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的DLA实现跨地域、跨实例的多AnalyticDB读写访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql server(常用)
- 下一篇: 解决git bash闪退问题