Presto基础学习--学习笔记

1,Presto背景

2011年,FaceBook的数据仓库存储在少量大型hadoop/hdfs集群,在这之前,FaceBook的科学家和分析师一直靠hive进行数据分析,但hive使用MR作为底层计算框架,是专为批处理设计的,但是随着数据的不断增多,使用hive进行一个简单的数据查询可能要花费几分钟或者几个小时,显然不能满足查询需求,Facebook也调研了其他比hive更快的工具,但是他们需要在功能有限的条件下做简单操作,以至于无法操作Facebook庞大的数据要求。
2012年开始研究自己的框架–presto,每日可以超过1pb查询,而且速度比较快,faceBook声称Presto的性能比hive要好上10倍或者100倍,presto和hive都是facebook开发的。2013年Facebook正式宣布开源Presto。

2. Presto简介

大数据分布式查询引擎
Presto是一个开源的分布式SQL查询引擎,适用于交互式查询,数据量支持GB到PB字节。
Presto的设计和编写完全是为了解决Facebook这样规模的商业数据仓库交互式分析和处理速度的问题。
Presto支持在线数据查询,包括Hive、kafka、Cassandra、关系数据库以及专门数据存储,一条Presto查询可以将多个数据源进行合并,可以跨越整个组织进行分析。
Presto以分析师的需求作为目标,他们期望相应速度小于1秒到几分钟,Presto终结了数据分析的两难选择,要么使用速度快的昂贵的商业方案,要么使用消耗大量硬件的慢速的“免费”方案。

3,主流大数据查询引擎性能对比

1,Hive

1,介绍
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。
Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 Mapper 和 Reducer 来处理内建的 Mapper 和 Reducer 无法完成的复杂的分析工作。
2,性能
Hive相对于其他查询引擎来说性能一般,主要的优势体现在系统负载低、稳定性高、数据格式支持面广、社区活跃度高,可以为其他多款查询引擎提供底层元数据,SparkSql、Presto、Impala、HAWQ等都支持基于Hive的查询。
成本低、稳定性好,生态兼容性好,因此Hive在企业中应用的较多。

2,sparkSQL

1,介绍
SparkSQL是Hadoop中另一个著名的SQL引擎,它以Spark作为底层计算框架,Spark使用RDD作为分布式程序的工作集合,它提供一种分布式共享内存的受限形式。 在分布式共享内存系统中,应用可以向全局地址空间的任意位置进行读写操作,而RDD是只读的,对其只能进行创建、转化和求值等操作。这种内存操作大大提高了计算速度。
SparkSQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive。可以利用hive作为数据源,Spark作为计算引擎,通过SQL解析引擎,实现基于Hive数据源,Spark作为计算引擎的方案。
2 性能
SparkSQL的性能相对其他的组件要差一些,多表单表查询性能都不突出。

Impala

1 ,介绍
Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大数据查询工具,它拥有和Hadoop一样的可扩展性、它提供了类SQL(类Hsql)语法,在多用户场景下也能拥有较高的响应速度和吞吐量。它是由Java和C++实现的,Java提供的查询交互的接口和实现,C++实现了查询引擎部分,除此之外,Impala还能够共享Hive Metastore,甚至可以直接使用Hive的JDBC jar和beeline等直接对Impala进行查询、支持丰富的数据存储格式(Parquet、Avro等)。
此外,Impala 没有再使用缓慢的 Hive+MapReduce 批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎,可以直接从 HDFS 或 HBase 中用 SELECT、JOIN 和统计函数查询数据,从而大大降低了延迟。
2, 性能
Impala官方宣传其计算速度是一大优点,在实际测试中它的多表查询性能和presto差不多,但是单表查询方面却不如presto好。 而且Impala有很多不支持的地方,例如:不支持update、delete操作,不支持grouping sets语法,不支持Date数据类型,不支持ORC文件格式等等,所以impala一般采用Parquet格式进行查询,而且Impala在查询时占用的内存很大。

HAWQ

1 介绍
HAWQ 是一个 Hadoop 上的 SQL 引擎,是以 Greenplum Database 为代码基础逐渐发展起来的。HAWQ 采用 MPP 架构,改进了针对 Hadoop 的基于成本的查询优化器。除了能高效处理本身的内部数据,还可通过 PXF 访问 HDFS、Hive、HBase、JSON 等外部数据源。HAWQ全面兼容 SQL 标准,能编写 SQL UDF,还可用 SQL 完成简单的数据挖掘和机器学习。无论是功能特性,还是性能表现,HAWQ 都比较适用于构建 Hadoop 分析型数据仓库应用。
2 性能
HAWQ 吸收了先进的基于成本的 SQL 查询优化器,自动生成执行计划,可优化使用Hadoop 集群资源。 HAWQ 采用 Dynamic Pipelining 技术解决这一关键问题。Dynamic Pipelining 是一种并行数据流框架,利用线性可扩展加速Hadoop查询,数据直接存储在HDFS上,并且其SQL查询优化器已经为基于HDFS的文件系统性能特征进行过细致的优化。
但是HAWQ在多表查询时比Presto、Impala差一些;而且不适合单表的复杂聚合操作,单表测试性能方面要比其余四种组件差很多,HAWQ环境搭建也会遇到诸多问题。

ClickHouse

3.5.1 介绍
ClickHouse由俄罗斯Yandex公司开发。专为在线数据分析而设计。Yandex是俄罗斯搜索引擎公司。官方提供的文档表名,ClickHouse日处理记录数”十亿级”。

特性:
①采用列式存储
②数据压缩
③基于磁盘的存储,大部分列式存储数据库为了追求速度,会将数据直接写入内存,按时内存的空间往往很小
④CPU 利用率高,在计算时会使用机器上的所有 CPU 资源
⑤支持分片,并且同一个计算任务会在不同分片上并行执行,计算完成后会将结果汇总
⑥支持SQL,SQL 几乎成了大数据的标准工具,使用门槛较低
⑦支持联表查询
⑧支持实时更新
⑨自动多副本同步
10,支持索引
11,分布式存储查询
2 性能
ClickHouse 作为目前所有开源MPP计算框架中计算速度最快的,它在做多列的表,同时行数很多的表的查询时,性能是很让人兴奋的,但是在做多表的Join时,它的性能是不如单宽表查询的。
性能测试结果表明ClickHouse在单表查询方面表现出很大的性能优势,但是在多表查询中性能却比较差,不如Presto和Impala、HAWQ的效果好。

Greenplum

3.6.1 介绍
Greenplum是一个开源的大规模并行数据分析引擎。借助MPP架构,在大型数据集上执行复杂SQL分析的速度比很多解决方案都要快。
特性:
①GPDB完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展。
②从应用编程接口上讲,它支持ODBC和JDBC。
③完善的标准支持使得系统开发、维护和管理都大为方便。
④支持分布式事务,支持ACID。
⑤保证数据的强一致性。
⑥做为分布式数据库,拥有良好的线性扩展能力。
⑦GPDB有完善的生态系统,可以与很多企业级产品集成,譬如SAS、Cognos、Informatic、Tableau等。
⑧也可以很多种开源软件集成,譬如Pentaho、Talend 等。
2 性能
Greenplum作为关系型数据库产品,它的特点主要就是查询速度快,数据装载速度快,批量DML处理快。 而且性能可以随着硬件的添加,呈线性增加,拥有非常良好的可扩展性。因此,它主要适用于面向分析的应用。 比如构建企业级ODS/EDW,或者数据集市等,Greenplum都是不错的选择。
整体性能上Greenplum的表现比较中庸,单表查询不如clickhouse,多表查询不如impala,整体性能不如presto。

Presto

1 介绍
Presto是一个分布式SQL查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(Aggregation)、连接(Join)和窗口函数(Window Functions)。作为Hive和Pig(Hive和Pig都是通过MapReduce的管道流来完成HDFS数据的查询)的替代者,Presto本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。
2 性能
Presto综合性能比起来要比其余组件好一些,无论是查询性能还是支持的数据源和数据格式方面都要突出一些,在单表查询时性能靠前,多表查询方面性能也很突出。
由于Presto是完全基于内存的并行计算,所以Presto在查询时占用的内存也不少,但是要比Impala少一些,比如多表Join时需要很大的内存,Impala占用的内存比Presto要多。

总结

1 多表查询
Presto、Impala以及HAWQ在多表查询方面更有优势。
虽说Presto和Impala在多表查询方面的性能差别不大,但是Impala的功能有一些局限性,Impala不支持的功能是没有办法参与性能对比测试的,例如:不支持update、delete操作,不支持grouping sets语法,不支持Date数据类型,不支持ORC文件格式等等,而Presto则基本没有这些局限问题。
2 单大表聚合
在单表测试方面ClickHouse性能最好,其次是Presto,相比于HAWQ和impala以及SparkSQL在单大表聚合操作方面的表现也相对优秀。

在这里插入图片描述

使用场景

1 Presto
多数据源时,可以使用presto进行统一查询。
快速查询时,presto查询性能高,但是需要的硬件资源也更昂贵。适合在单次扫描级别GB、TB级别的数据。
多张大表的关联查询时不应该使用presto,presto也不应作为etl工具,因此,在数仓的前两层很少使用presto。
2 Hive
海量数据的场景下,一是需要大量的硬件资源,二是海量的数据极可能造成内存溢出等各种异常。此时推荐使用Hive:成本低、稳定性好,且生态兼容性好。

4,Presto架构

Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker。
Presto查询引擎是一个M-S的架构,由一个coordinator节点,一个Discovery Server节点,多个Worker节点组成,Discovery Server通常内嵌在Coordinator节点中。Coordinator负责SQL的解析,生成执行计划,分发给Worker节点进行执行,Worker节点负责实时查询执行任务。Worker节点启动后向discovery Server服务注册,Coordinator 从discovery server获取可以工作的Worker节点。如果配置了hive connector,需要配置hive MetaSote服务为Presto提供元信息,worker节点和HDFS进行交互数据。

5,相关术语

Connector 连接器

Presto通过Connector连接器来适应数据源,例如Hive或关系数据库。功能类似于数据库的驱动程序。允许Presto使用标准API与资源进行交互。
Presto包含几个内置连接器:JMX连接器,可访问内置系统表的System连接器,Hive连接器和旨在提供TPC-H基准数据的TPCH连接器。许多第三方开发人员都贡献了连接器,因此Presto可以访问各种数据源中的数据,比如:ES、Kafka、MongoDB、Redis、Postgre、Druid、Cassandra等。
每个Catalog都与一个特定的连接器关联。如果检查Catalog配置文件,将会看到每个都包含一个强制性属性connector.name,Catalog Manager使用此属性指定Catalog的连接器。可能有多个Catalog使用同一连接器来访问相似数据库的两个不同实例。比如,有两个Hive群集,则可以在单个Presto群集中配置两个都使用Hive连接器的Catalog,从而允许从两个不同的Hive集群中查询数

Catalog 连接目录

Presto Catalog是数据源schema的上一级,并通过连接器访问数据源。例如,可以配置Hive Catalog以通过Hive Connector连接器提供对Hive信息的访问。
在Presto中使用表时,标准表名始终是被支持的。例如,hive.test_data.test的标准表名将引用hive catalog中test_data schema中的test table。
Catalog需要在Presto的配置文件中进行配置。

Schema

Schema是组织表的一种方式。Catalog和Schema共同定义了一组可以查询的表。当使用Presto访问Hive或关系数据库(例如MySQL)时,Schema会转换为目标数据库中的对应Schema。

Table

Table表是一组无序的行,它们被组织成具有类型的命名列。与关系数据库中的含义相同。

6,日期与时间类型

1,时间转字符
date_format(timestamp, format) → varchar
将timestamp转换化为指定format格式的string。
Format的格式:
年:%Y
月:%m
日:%d
时:%H
分:%i
秒:%s
周几:%w(0…6)

--时间转字符串
select date_format(timestamp '2020-12-12 12:12:12' , '%Y-%m-%d %H:%i:%s');

2,字符转时间
date_parse(string, format) → timestamp
将format格式的string转换为时间类型。

--字符串转时间
select date_parse('2020-12-12 12:12:12' , '%Y-%m-%d %H:%i:%s');

3, 字符转日期
date(x) → date
等同于CAST(x AS date)

--字符串转日期
select date('2020-12-12');

4, 时间加减
date_add(unit, value, timestamp) → [same as input]
进行unit单位的时间运算。减法可以用负数来执行。
select date_add(‘hour’,-3,timestamp ‘2020-12-12 12:12:12’)

date_diff(unit, timestamp1, timestamp2) → bigint
时间timestamp2-timestamp1后,以unit单位进行展示差值。
select date_diff(‘hour’,timestamp ‘2020-12-12 12:12:12’,timestamp ‘2020-12-12 02:12:12’)

Unit单位可以是:year,month,day,hour

--分钟减去3
select date_add('second',3,timestamp '2020-12-12 12:12:12');--计算2个日期的差值,可以换算不同的单位
select date_diff('month',timestamp '2020-10-11 12:12:11',timestamp '2020-12-12 02:12:12');

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在vue3项目嵌套 导入老项目 jQuery项目,减少重复开发

背景: 公司管理平台项目一直是前辈用jQuery做的,为扩展根据自身的技术栈,将jQuery的老项目嵌套入vue3的框架,新功能用vue开发,旧的功能不动直接在vue3用iframe容器来展示 嵌套步骤 2种方式嵌套,一个是已…

微机原理——并行接口8255学习1

目录 并行接口特点 可编程并行接口芯片8255 8255端口地址 8255的三种工作方式 8255的两种命令(方式命令和C端口命令) 由用户扩展的并行接口8255的应用 声光报警器接口设计 步进电机控制接口设计 PA端口实现跑马灯 PB端口实现按键输入 并行接口特…

同旺科技 USB TO SPI / I2C --- 调试W5500_Ping测试

所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 设置寄存器: SHAR(源MAC地址寄存器),该寄存器用来设置源MAC…

【预计IEEE出版|EI征稿通知】第六届下一代数据驱动网络国际学术会议 (NGDN 2024)

第六届下一代数据驱动网络国际学术会议 (NGDN 2024) The Sixth International Conference on Next Generation Data-driven Networks 2024年4月26-28日 | 中国沈阳 基于前几届在英国埃克塞特 (ISPA 2020) 、中国沈阳 (TrustCom 2021) 和中国武汉 (IEEETrustCom-2022) 成功举…

如何查看Microsoft Office 使用期限

1.进入到 Office 软件的安装目录(******\Microsoft Office\Office) ## 以管理员身份打开 Windows PowerShell输入以下命令,回车 cscript ospp.vbs /dstatusREMAINING GRACE 一行表示激活剩余天数(括号内是换算成的剩余分钟数…

Android实验:绑定service实验

目录 实验目的实验内容实验要求项目结构代码实现代码解释结果展示 实验目的 充分理解Service的作用,与Activity之间的区别,掌握Service的生命周期以及对应函数,了解Service的主线程性质;掌握主线程的界面刷新的设计原则&#xff…

文心一言 VS 讯飞星火 VS chatgpt (148)-- 算法导论12.2 3题

三、用go语言,写出过程 TREE-PREDECESSOR 的伪代码。 文心一言: 以下是使用Go语言编写的TREE-PREDECESSOR函数的伪代码: func TREE-PREDECESSOR(node) { if node.parent ! nil { return node.parent } // 如果节点是根节点&#xff0c…

Centos图形化界面封装OpenStack Ubuntu镜像

目录 背景 环境 搭建kvm环境 安装ubuntu虚机 虚机设置 系统安装 登录虚机 安装cloud-init 安装cloud-utils-growpart 关闭实例 删除细节信息 删除网卡细节 使虚机脱离libvirt纳管 结束与验证 压缩与转移 验证是否能够正常运行 背景 一般的镜像文件在上传OpenSt…

第 374 场 LeetCode 周赛题解

A 找出峰值 枚举 class Solution { public:vector<int> findPeaks(vector<int> &mountain) {int n mountain.size();vector<int> res;for (int i 1; i < n - 1; i)if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i 1…

登录界面(flex布局练习)

练习&#xff1a;登录界面在我们网页制作的过程中经常遇见&#xff0c;所以请你编写一个界面联系一下&#xff0c;这个可以增加一些动画或者是其他的效果&#xff0c;当然越帅越好。请使用flex或者其他布局练习 例如&#xff1a; 代码 <!DOCTYPE html> <html lang…

SLAM ORB-SLAM2(10)轨迹跟踪过程

SLAM ORB-SLAM2(10)轨迹跟踪过程 1. 总体过程2. ORB 特征点提取2.1. 相机数据处理2.1.1. 单目相机图像处理2.1.2. 双目相机图像处理2.1.3. RGBD相机图像处理2.2. ORB 特征点3. 地图初始化3.1. 坐标形式3.2. 坐标原点3.3. 地图尺度4. 相机位姿初始估计4.1. 关键帧4.2. 运动模型…

文件搜索神器—Everything,结合内网穿透秒变在线搜索神器!

Everythingcpolar搭建在线资料库&#xff0c;实现随时随地访问 文章目录 Everythingcpolar搭建在线资料库&#xff0c;实现随时随地访问前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前…

2 文本分类入门:TextCNN

论文链接&#xff1a;https://arxiv.org/pdf/1408.5882.pdf TextCNN 是一种用于文本分类的卷积神经网络模型。它在卷积神经网络的基础上进行了一些修改&#xff0c;以适应文本数据的特点。 TextCNN 的主要思想是使用一维卷积层来提取文本中的局部特征&#xff0c;并通过池化操…

2023.12.2 关于 Spring AOP 详解

目录 Spring AOP Spring AOP 常见使用场景 AOP 组成 切面&#xff08;类&#xff09; 切点&#xff08;方法&#xff09; 通知 ​编辑 前置通知&#xff08;Before&#xff09; 后置通知&#xff08;After&#xff09; 返回通知&#xff08;AfterReturning&#xff0…

龙芯loongarch64服务器编译安装maturin

前言 maturin 是一个构建和发布基于 Rust 的 Python 包的工具,但是在安装maturin的时候,会出现如下报错:error: cant find Rust compiler 这里记录问题解决过程中遇到的问题: 1、根据错误的提示需要安装Rust Compiler,首先去其官网按照官网给的解决办法提供进行安装 curl…

loguru的简单使用

详细使用&#xff1a;Table of contents — loguru documentation 【1】日志的级别 日志级别默认分为6种 1、NOTSET (0)2、DEBUG (1)3、INFO (2)4、WARNING (3)5、ERROR (4)6、CRITICAL (5) logging 执行时输出大于等于设置的日志级别的日志信息&#xff0c;如设置日…

阿里系列-淘宝接口抓取及相关问题

阿里系-淘宝接口抓取 一、安装charlse抓包工具 官方下载地址 安装证书 二、安装xposed hook框架 Xponsed简介 具体安装步骤 三、安装模块 关闭阿里系ssl验证 开启http模式 支持支付宝、淘宝、淘宝直播各个接口抓取 四、效果如下 接下去一段时间更新阿里系相关接口 文章目录 一、…

SmartSoftHelp8,代码版权保护

1.Html网页前端添加作者开发信息 2. Html网页添加版权信息 3. Css添加作者开发信息 4. JavaScript添加作者开发信息 5. C井后端代码添加作者开发信息 6. Dll内裤添加作者开发信息 7.应用程序添加开发作者信息&#xff0c;著作权&#xff0c;应用版权信息 下载地址&#…

函数柯里化

前端面试大全JavaScript函数柯里化 &#x1f31f;经典真题 &#x1f31f;什么是函数柯里化 &#x1f31f;柯里化快速入门 &#x1f31f;函数柯里化实际应用 &#x1f31f;封装通用柯里化函数 &#x1f31f;一道经典的柯里化面试题 &#x1f31f;真题详解 &#x1f31f;…

C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝

系列文章目录 第一章 结构体的介绍和基本使用 &#x1f31f; 个人主页&#xff1a;古德猫宁- &#x1f308; 信念如阳光&#xff0c;照亮前行的每一步 文章目录 系列文章目录&#x1f308; *信念如阳光&#xff0c;照亮前行的每一步* 前言前面一篇文章主要介绍了结构体的基础…