使用DLA SQL(兼容Presto) CU版分析HDFS数据

简介: 最近,DLA SQL发布了CU版,支持访问用户自建的HDFS,使得挖掘HDFS上面数据的价值成为可能。

背景介绍

阿里云数据湖分析(DLA)产品提供一站式的数据湖分析与计算服务,支持 ETL、机器学习、流、交互式分析,可以与OSS、数据库等多种数据源搭配使用,帮助用户构建统一、安全、高效、开放的数据湖解决方案。DLA SQL引擎基于Presto实现,可以实现高效的在线分析,主要面向用户探索式分析、报表以及轻量ETL的场景,支持OSS、RDS、AnalyticsDB、MaxCompute、TableStore、ElasticSearch等多种数据源。
针对云上OSS存储价格低廉、容量可以无限扩展的优点,我们围绕OSS上的数据做了很多优化和实用的功能,用户可将在线数据和实时增量数据同步到OSS中,然后对数据做深度的计算和分析;还可以使用元数据爬取的功能,自动为OSS上面的数据文件创建及更新数据湖元数据,方便分析和计算。


我们也注意到,有不少用户的数据是存放在HDFS上面的。作为最流行的开源分布式文件系统,HDFS具有高度容错性、高吞吐量、高可靠、可水平扩展等优点,适用于海量数据的存储,一直是许多分布式系统的底座,拥有完整的生态支持。然而,受限于DLA SQL的网络架构,在过去我们一直没有提供HDFS的支持。最近,DLA SQL发布了CU版,支持访问用户自建的HDFS,使得挖掘HDFS上面数据的价值成为可能。

操作步骤

我们以一个csv文件的简单查询为例。

1. 准备数据文件。

可以在本地创建一个新的文本文件example.txt,在其中粘贴如下内容:

7,8,9

然后执行如下命令将文件上传到HDFS(需要把172.16.199.0:9000替换成你的HDFS集群的host,下同):

hadoop fs -mkdir -p hdfs://172.16.199.0:9000/test/p/d=1
hadoop fs -copyFromLocal example.txt hdfs://172.16.199.0:9000/test/p/d=1/example.txt

2. 开通DLA SQL CU版
3. 绑定数据源网络。注意这里绑定的数据源网络和HDFS要在同一个vpc下面,确保网络可以联通。
4. 连接DLA,创建库:

CREATE DATABASE `my_hdfs_db`
WITH DBPROPERTIES (
  catalog = 'hive',
  location = 'hdfs://172.16.199.0:9000/test/'
)

这里location指定为库所在的目录。需要注意的是由于元数据系统和用户网络不能连通,DLA在建库/表时不会对目录做任何检查,所以需要用户自己保证这里指定的是一个可以从HDFS集群外部访问的正确路径。
关于建库语句的更多说明参见DLA SQL语法说明: https://help.aliyun.com/document_detail/72005.html?spm=a2c4g.11174283.6.587.4e37b1bfbH0xzX

5. 建表:

CREATE EXTERNAL TABLE p (
  `a` int,
  `b` int,
  `c` int
) partitioned by (d int)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ','
STORED AS `TEXTFILE`
LOCATION 'hdfs://172.16.199.0:9000/test/p/';

关于建表语句的更多描述参见DLA SQL语法说明:https://help.aliyun.com/document_detail/72006.html?spm=a2c4g.11186623.6.588.6388464dB88boC 。 注意HDFS表不支持auto.create.location属性。

6. 查询数据:

mysql> /*+ pool-selector=vc-test */ msck repair table p;
+-----------+-----------+
| Partition | Operation |
+-----------+-----------+
| d=1       | CREATED   |
+-----------+-----------+
1 row in set (16.47 sec)

mysql> /*+ pool-selector=vc-test */ select * from  p;
+------+------+------+------+
| a    | b    | c    | d    |
+------+------+------+------+
|    7 |    8 |    9 |    1 |
+------+------+------+------+
1 row in set (4.74 sec)

更多信息可参考DLA帮助文档。

使用DLA SQL分析HDFS数据的优势

对比通过自建Presto/Hive来分析HDFS上的数据,使用DLA SQL具有如下优势:

  • MySQL生态支持
  • 高可用
  • 开箱即用

MySQL生态的支持

使用自建的Presto/Hive,在选择外围客户端软件/BI软件/调度软件时,要考虑这些软件对Presto/Hive的支持,可选择的范围通常会有很大的限制。而DLA SQL兼容MySQL协议,可以使用MySQL生态庞大的周边软件设施,方便了用户,降低用户在这些周边软件上的投入。
image.png

高可用

在开源的Presto架构中Presto Coordinator是个单点,如果因为CPU/内存或者底层物理机的原因导致Coordinator不可用,会导致整个集群不可用,从而影响用户的使用,DLA SQL内置了多Coordinator HA,当一个Coordinator宕机,另外一个Coordinator会自动接管,保证整个集群的可用性:
image.png

开箱即用

DLA SQL通过在页面点击开通即可使用,CU版集群可以在一两分钟内创建好。然后进行数据查询,直接在DLA控制台就可以查询,或者任何支持MySQL协议的客户端都可以查询;最后因为DLA SQL支持了MySQL协议,云上有现成的BI服务: QuickBI,有现成的调度服务阿里云DMS, 阿里云DataWorks等等,因此BI报表展示以及任务的定时调度均可以在5分钟内完成;整个过程可以在30分钟内完成,真正做到开箱即用。


关于DLA SQL的更多介绍参见 https://developer.aliyun.com/article/770819

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
11天前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
12天前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
14天前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
73 4
|
14天前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
54 0
|
14天前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
27 0
|
14天前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
36 0
|
SQL 缓存 分布式计算
爆料:DLA SQL新体验,新数据源,还有一元购(内含福利)
DLA SQL全新改版,包括虚拟集群展示优化,提交SQL到虚拟集群、通过虚拟集群过滤历史SQL、置默认虚拟集群等,让用户能更加便捷的使用SQL虚拟集群;此外还支持了Kudu、OceanBase数据源。DLA SQL新推出1元首购原价315元的DLA 1000CU时资源包,福利链接:https://common-buy.aliyun.com/?commodityCode=openanalytics_cu_bag#/buy
爆料:DLA SQL新体验,新数据源,还有一元购(内含福利)
|
1月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
85 13