MaxCompute支持通过外部表关联OSS,进行数据输出。然而,由于MaxCompute外部表的目录结构比较特殊,无法使用MaxCompute以外的工具对OSS上的文件做进一步的分析,限制了外部表的使用场景。因此,DLA最近支持了分析MaxCompute外部表数据文件的功能,借助DLA强大的生态,可以方便地对MaxCompute外部表进行分析,并能够和其他数据源做联合查询。
本文通过一个简单的例子介绍如何使用这个功能。
准备工作:创建MaxCompute外部表并写入数据
进入MaxCompute工作空间,新建一个ODPS SQL节点,在其中执行如下语句创建OSS外表:
CREATE EXTERNAL TABLE parquet
(
a int,
b int
)
STORED AS PARQUET
LOCATION 'oss://${accessKeyId}:${accessKeySecret}@${endpoint}/${bucket}/${userPath}/';
关于创建外部表语法的更多信息可参考MaxCompute文档。
建表之后,我们可以执行如下语句向其中写入几条测试数据:
insert into parquet values(1,1);
insert into parquet values(2,2);
执行查询,我们可以看到数据已经写入到外表中了:
使用DLA分析MaxCompute外部表
首先创建一个OSS Schema:
CREATE SCHEMA dla_oss_db with DBPROPERTIES(
catalog='oss',
location 'oss://${bucket}/${userPath}/'
)
创建表:
CREATE EXTERNAL TABLE odps_parquet (
`a` int,
`b` int
)
STORED AS PARQUET
LOCATION 'oss://${bucket}/${userPath}/'
TBLPROPERTIES (
'directory.odps' = 'true'
);
在读取MaxCompute外部表时,和其他OSS文件不同的是多了一个表属性'directory.odps' = 'true',这表示表的目录是按照MaxCompute外部表的格式来组织的。
执行查询:
关于我们
数据湖分析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基本跑不出来
- 产品文档:https://www.aliyun.com/product/datalakeanalytics
- 帮助文档:https://help.aliyun.com/document_detail/70378.html
- MySQL&PG&SqlServer一键同步数据到DLA:https://help.aliyun.com/document_detail/126559.html
- 新客户1元试用:https://common-buy.aliyun.com/?commodityCode=openanalytics_post