首页 » SEO优化 » phppresto技巧_Presto入门介绍

phppresto技巧_Presto入门介绍

访客 2024-11-19 0

扫一扫用手机浏览

文章目录 [+]

1.1 定义

Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。
Presto是一个OLAP的工具,善于对海量数据进行繁芜的剖析;但是对付OLTP场景,并不是Presto所善于,以是不要把Presto当做数据库来利用。

phppresto技巧_Presto入门介绍

和大家熟习的Mysql比较:首先Mysql是一个数据库,具有存储和打算剖析能力,而Presto只有打算剖析能力;其次数据量方面,Mysql作为传统单点关系型数据库不能知足当前大数据量的需求,于是有各种大数据的存储和剖析工具产生,Presto便是这样一个可以知足大数据量剖析打算需求的一个工具。

phppresto技巧_Presto入门介绍
(图片来自网络侵删)

1.2 数据源

Presto须要从其他数据源获取数据来进走运算剖析,它可以连接多种数据源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等

一条Presto查询可以将多个数据源的数据进行合并剖析。

比如:select from a join b where a.id=b.id;,个中表a可以来自Hive,表b可以来自Mysql。

1.3 上风

Presto是一个低延迟高并发的内存打算引擎,比较Hive,实行效率要高很多。

举例:

SELECT id,

name,

source_type,

created_at

FROM dw_dwb.dwb_user_day

WHERE dt='2018-06-03'

AND created_at>’2018-05-20’;

上述SQL在Presto运行韶光不到1秒钟,在Hive里要几十秒钟。

1.4数据模型

Presto利用Catalog、Schema和Table这3层构造来管理数据。

---- Catalog:便是数据源。
Hive是数据源,Mysql也是数据源,Hive 和Mysql都是数据源类型,可以连接多个Hive和多个Mysql,每个连接都有一个名字。
一个Catalog可以包含多个Schema,大家可以通过show catalogs 命令看到Presto连接的所有数据源。

---- Schema:相称于一个数据库实例,一个Schema包含多张数据表。
show schemas from 'catalog_name'可列出catalog_name下的所有schema。

---- Table:数据表,与一样平常意义上的数据库表相同。
show tables from 'catalog_name.schema_name'可查看'catalog_name.schema_name'下的所有表。

在Presto中定位一张表,一样平常是catalog为根,例如:一张表的全称为 hive.test_data.test,标识 hive(catalog)下的 test_data(schema)中test表。

可以简理解为:数据源的大类.数据库.数据表。

二、Presto与Hive

Hive是一个基于HDFS(分布式文件系统)的一个数据库,具有存储和剖析打算能力, 支持大数据量的存储和查询。
Hive 作为数据源,结合Presto分布式查询引擎,这样大数据量的查询打算速率就会快很多。

Presto支持标准SQL,这里须要提醒大家的是,在利用Hive数据源的时候,如果表是分区表,一定要添加分区过滤,不加分区扫描全表是一个很暴力的操作,实行效率低下并且占用大量集群资源,大家只管即便避免这种写法。

这里提到Hive分区,我大略先容一下观点。
Hive分区便是分目录,把一个大的数据集根据业务须要分割成更细的数据集。

举例:如果一个表的数据都放在/user/xiaoming/table/目录下,如果想把数据按照每天的数据细分,则就变成/user/xiaoming/table/2018-06-01/,/user/xiaoming/table/2018-06-02/,……如果查询某一天的数据,就可以直接取某一天目录下的数据,不须要扫描其他天的数据,节省了韶光和资源。

三、Presto接入和利用办法

Presto的接入办法有多种:presto-cli,pyhive,jdbc,http,golang,SQLAlchemy,PHP等,个中presto-cli是Presto官方供应的,下面以presto-cli为例展开解释(自行下载)。

以连接hive数据源为例,在电脑终端输入:./presto-cli.jar --server presto.xxx-apps.com:9200 --catalog hive --user xxxx --source 'pf=adhoc;client=cli'就可以进入presto终端界面。

先阐明下各参数的含义:

--server 是presto做事地址;

--catalog 是默认利用哪个数据源,后面也可以切换,如果想连接mysql数据源,利用mysql数据源名称即可;

--user 是用户名;

--source 是代表查询来源,source设置格式为key=value形式(英文分号分割); 例如个人从command line查询应设置为pf=adhoc;client=cli。

进入终端后:

查看数据源: show catalogs;

查看数据库实例:show schemas;

补充先容:

1.利用场景?

mysql跨数据库查询;数据仓库的表数据查询(数据剖析) ...

2.为什么presto查询速率比Hive快?

presto是常驻任务,接管要求立即实行,全内存并行打算;hive须要用yarn做资源调度,接管查询须要先申请资源,启动进程,并且中间结果会经由磁盘。

相关文章

今日头条算法岗三面算法工程师的面试之路

大数据和人工智能技术逐渐成为各行各业的热门话题。今日头条作为中国领先的资讯平台,其算法岗位一直是求职者争相竞逐的焦点。本文将针对今...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法如何打造个化内容推荐

在移动互联网时代,信息爆炸已成为常态。如何在海量信息中找到自己感兴趣的内容,成为了一个亟待解决的问题。今日头条作为一款备受瞩目的新...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法推荐其弊端与反思

算法推荐已经成为各大平台的核心竞争力。今日头条作为国内领先的资讯平台,凭借其强大的算法推荐系统,吸引了大量用户。在享受算法带来的便...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法思维导图信息推荐的奥秘

信息传播速度越来越快,用户对信息的需求也越来越多样化。今日头条作为一款备受关注的新闻资讯平台,其背后的算法推荐机制一直是业界关注的...

SEO优化 2025-01-31 阅读1 评论0