暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DLA 分析 AnalyticDB for PostgreSQL 数据源的数据

云原生数据湖 2021-03-22
1383

简介

数据湖分析(Data Lake Analytics,DLA)是无服务器(Serverless)化的云上交互式查询分析服务。无需ETL,就可通过DLA在云上通过标准JDBC直接对阿里云OSS,TableStore,RDS,MongoDB等不同数据源中存储的数据进行查询和分析。DLA无缝集成各类商业分析工具,提供便捷的数据可视化。

DLA提供了几大核心亮点:

  • 轻松分析多源数据:OSS,TableStore,RDS等,让不同存储源中沉睡已久的数据,具备分析能力。

  • 能够对异构数据源做关联分析。

  • 全Serverless结构,无需长期持有成本,完全按需使用,更灵活,资源伸缩方便,升级无感知。

AnalyticDB for PostgreSQL 中文名为分析型数据库PostgreSQL版(原HybridDB for PostgreSQL)是一种简单、快速、经济高效的 PB 级云端数据仓库解决方案。分析型数据库PostgreSQL版 兼容 Greenplum 开源数据仓库,为一种采用 MPP 全并行架构的数仓服务,其广泛兼容 PostgreSQL/Oracle 的语法生态,新一代向量引擎性能超越传统数据库引擎 10 倍以上,分布式SQL优化器实现复杂查询语句免调优。通过分析型数据库PostgreSQL版可以实现对海量数据的即席查询分析、ETL 处理及可视化探索,是各行业有竞争力的云上数据仓库解决方案。

随着 DLA 使用的用户数越来越多,通过 DLA 读写 AnalyticDB for PostgreSQL 并和其他数据源整合分析已经成为客户一个很重要的需求,基于这个情况,我们为 DLA 添加了读写 AnalyticDB for PostgreSQL 数据源的功能。

如何使用

AnalyticDB for PostgreSQL 数据准备

我们先在已经购买好的 AnalyticDB for PostgreSQL 里面建一张表吧,如下:

CREATE TABLE products ( 
product_no integer PRIMARY KEY,
name text,
price numeric)
DISTRIBUTED BY (product_no);

复制

这张表默认是创建在名为 postgres 的数据库里面,对应的 Schema 为 public,我们往里面插入几条数据:

INSERT INTO products (product_no, name, price) VALUES
(1, 'Cheese', 9.99),
(2, 'Bread', 1.99),
(3, 'Milk', 2.99);

复制

我们可以查看下已经插入进去的数据

通过 DLA 操作 AnalyticDB for PostgreSQL

为了让 DLA 能够访问 AnalyticDB for PostgreSQL,需要到 AnalyticDB for PostgreSQL 对应的实例里面添加 100.104.0.0/16 IP 白名单。

现在我们可以在 DLA 里面读写这张表了,具体如下。通过 DLA 控制台创建一张数据库:

CREATE SCHEMA `dla_adbpg_test_db` WITH DBPROPERTIES (
CATALOG = 'adbpg',
LOCATION = 'jdbc:postgresql://gp-xxxxx.gpdb.rds.aliyuncs.com:3432/postgres',
USER = 'xxxx',
PASSWORD = 'xxxxx',
INSTANCE_ID = 'xxxxxx',
VPC_ID = 'x'xxx
);

复制

说明:

  • 这里 CATALOG 需要写 adbpg,代表数据源是 AnalyticDB for PostgreSQL

  • LOCATION:这里到你 AnalyticDB for PostgreSQL 控制台里面看下对应 AnalyticDB for PostgreSQL 实例的内网地址,因为我这里是默认的数据库,所以写 postgres。这里需要根据你实际情况写对应的数据库名称。

  • USER 和 PASSWORD 对应的是你 AnalyticDB for PostgreSQL 的用户名和密码;

  • INSTANCE_ID:对应 AnalyticDB for PostgreSQL 实例ID

  • VPC_ID:对应的是 VPC id。

建表语法

语法一

create external table dla_tablename (
column1 datatype,
column2 datatype,
column3 datatype
) tblproperties(
table_mapping = 'schema_name.adbpg_tablename'
);

复制

语法二

create external table dla_tablename like mapping('schema_name.adbpg_tablename');
复制

语法二

msck repair database dla_adbpg_db
复制

注意:因为 AnalyticDB for PostgreSQL 里面一个 db 里面会有多个 schema,不同 schema 里面的表名可能会有重复,所以目前 msck repair database 只能识别出 public schema 里面的表。

我们使用上面的建表语法一,在 DLA 里面创建一张表和刚刚 AnalyticDB for PostgreSQL 上面的 products 表映射:

create external table products (
product_no int,
name varchar(1023),
price double
) tblproperties(
table_mapping = 'public.products'
);

复制

当然,如果我们不知道 AnalyticDB for PostgreSQL 中对应库里面有什么表,或者表太多,我不想一张一张到 DLA 里面建立映射,那我们也可以使用下面命令自动识别 AnalyticDB for PostgreSQL 对应库里面的表:

msck repair database dla_adbpg_test_db
复制

现在我们可以通过 DLA 查询 AnalyticDB for PostgreSQL 里面 products 表中的数据:

当然,我们也可以通过 DLA 往 AnalyticDB for PostgreSQL 中的 products 表插入数据:

insert into dla_adbpg_test_db.products values(4, 'Apple', 10.1)
复制

为了确定这条数据的确插入到 AnalyticDB for PostgreSQL 中的 products 表里面,我们到 DMS 中查看这张表的数据:

可以看到,这条数据确实插进去了。

快去体验 DLA 读写 AnalyticDB for PostgreSQL 里面的表吧。


文章转载自云原生数据湖,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论