做中介最好用的网站,做视频找素材的网站,网站推广一般多少钱,旅游网站策划书最近在调研presto查询引擎的模块#xff0c;先了解了下大体的框架和基本知识。这篇文章适合入门的童鞋看#xff0c;因此转载了#xff0c;用于以后查询使用。 1#xff0c; Presto基本认识 1.1 定义 Presto是一个分布式的查询引擎#xff0c;本身并不存储数据#xff…最近在调研presto查询引擎的模块先了解了下大体的框架和基本知识。这篇文章适合入门的童鞋看因此转载了用于以后查询使用。 1 Presto基本认识 1.1 定义 Presto是一个分布式的查询引擎本身并不存储数据但是可以接入多种数据源并且支持跨数据源的级联查询。Presto是一个OLAP的工具擅长对海量数据进行复杂的分析但是对于OLTP场景并不是Presto所擅长所以不要把Presto当做数据库来使用。 和大家熟悉的Mysql相比首先Mysql是一个数据库具有存储和计算分析能力而Presto只有计算分析能力其次数据量方面Mysql作为传统单点关系型数据库不能满足当前大数据量的需求于是有各种大数据的存储和分析工具产生Presto就是这样一个可以满足大数据量分析计算需求的一个工具。 1.2 数据源 Presto需要从其他数据源获取数据来进行运算分析它可以连接多种数据源包括Hive、RDBMSMysql、Oracle、Tidb等、Kafka、MongoDB、Redis等 一条Presto查询可以将多个数据源的数据进行合并分析。 比如select * from a join b where a.idb.id;其中表a可以来自Hive表b可以来自Mysql。 1.3 优势 Presto是一个低延迟高并发的内存计算引擎相比Hive执行效率要高很多。 举例 SELECT id, name, source_type, created_at FROM dw_dwb.dwb_user_day WHERE dt2018-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表。 可以简理解为数据源的大类.数据库.数据表。 2 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: 3 Presto接入方式 Presto的接入方式有多种presto-clipyhivejdbchttpgolangSQLAlchemyPHP等其中presto-cli是Presto官方提供的下面以presto-cli为例展开说明(自行下载)。 以连接hive数据源为例在电脑终端输入./presto-cli.jar --server presto.xxx-apps.com:9200 --catalog hive --user xxxx --source pfadhoc;clientcli就可以进入presto终端界面。 先解释下各参数的含义 --server 是presto服务地址 --catalog 是默认使用哪个数据源后面也可以切换如果想连接mysql数据源使用mysql数据源名称即可 --user 是用户名 --source 是代表查询来源source设置格式为keyvalue形式英文分号分割 例如个人从command line查询应设置为pfadhoc;clientcli。 进入终端后: 查看数据源 show catalogs; 查看数据库实例show schemas; Presto使用手册https://prestodb.io/docs/current/ 问答 1.使用场景 mysql跨数据库查询数仓的表数据查询(数据分析) ... 2.为什么presto查询速度比Hive快 presto是常驻任务接受请求立即执行全内存并行计算hive需要用yarn做资源调度接受查询需要先申请资源启动进程并且中间结果会经过磁盘。