阿里云数据湖分析(Data Lake Analytics)支持对AnalyticDB for MySQL 3.0 中的数据进行直接分析,这篇文章介绍一下用法。
创建数据库
在 DLA 里面创建一个底层映射到 AnalyticDB for MySQL 3.0 的Database的语法如下:
CREATE DATABASE `adb3_demo_db`
WITH DBPROPERTIES (
catalog = 'adb3',
location = 'jdbc:mysql://am-xxxxx.ads.aliyuncs.com/adb3_it_db',
user = 'dla_test',
password = 'openanalytics@2018',
vpc_id = 'vpc-xxxxxxxx',
instance_id = 'am-xxxxxx'
);
注意这里的 catalog = 'adb3'
指明了这个映射的库是一个AnalyticDB for MySQL 3.0的库。跟普通的建库不同的是这里多了两个属性: VPC_ID 和 INSTANCE_ID 。VPC_ID 是您的AnalyticDB for MySQL 3.0所在VPC的ID, 而 INSTANCE_ID 则是你的 AnalyticDB for MySQL 3.0 实例ID,如下图所示:
建表需要这两个额外信息是因为现在用户的数据库都是处于用户自己的VPC内部,默认情况下 DLA 是访问不了用户 VPC 里面的资源的,为了让DLA能够访问到用户 AnalyticDB 3.0 里面的数据,我们需要利用阿里云的VPC反向访问技术。
权限声明: 当您通过上述方式建库,就视为您同意我们利用VPC反向访问的技术去读写您的RDS。
另外您还需要把 100.104.0.0/16
IP地址段加入到你的 AnalyticDB for MySQL 3.0 的白名单列表,这是我们VPC反向访问的IP地段,如下图:
创建表
数据库建完之后,我们可以建表了,我们先在你的 AnalyticDB for MySQL 3.0 里面建立如下的 person 表用来做测试:
create table person (
id int,
name varchar(1023),
age int
);
并且向里面插入一下测试数据:
insert into person
values (1, 'james', 10),
(2, 'bond', 20),
(3, 'jack', 30),
(4, 'lucy', 40);
然后就可以在 DLA 的数据库里面建立相应的映射表了:
create external table person (
id int,
name varchar(1023),
age int
);
这样我们通过MySQL客户端连接到 DLA 数据库上面,就可以对 MySQL 数据库里面的数据进行查询了:
mysql> select * from person;
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | james | 10 |
| 2 | bond | 20 |
| 3 | jack | 30 |
| 4 | lucy | 40 |
+------+-------+------+
4 rows in set (0.35 sec)
关于我们
数据湖分析Data Lake Analytics简介
欢迎大家使用数据湖分析(DLA),DLA不仅仅便宜,且快,且方便,专为阿里云数据湖分析方案而生
- 支持自建、托管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多种数据源分析
- 支持按量 按照扫描量 的计费方式,准入门槛0元,提供的Serverless的弹性服务为按需收费,不需要购买固定的资源,完全契合业务潮汐带来的资源波动,满足弹性的分析需求,同时极大地降低了运维成本和使用成本
- 平台底层托管大集群且自动弹性,在一定数据量情况下,分析性能比自建小集群高出400%
-
支持一键 把 MySQL、PG、SqlServer、PolarDb数据库 拖到DLA,再分析,解决原MySQL不敢分析的问题。 DLA 分析性能TPC-H 10G情况 比原MySQL 8c16g 等高出10倍,数据量越大,MySQL性能越差,在1TB数据量下,原MySQL基本跑不出来