参考文章:https://prestosql.io/blog/2019/04/23/even-faster-orc.html 最近Presto的官网发表了一篇文章,叙述了新版本的Presto对ORC格式读取的性能优化过程...在 TPC-DS benchmark 测试中,对于 ORC 格式新的读取方式 Presto 总的查询耗费时间减少了约5%,CPU使用量减少了约9%。 What improved?...对于ORC各个数据类型的优化 Why exactly is this faster?.../blob/308/presto-orc/src/main/java/io/prestosql/orc/stream/BooleanInputStream.java#L218)。...对使用zlib压缩算法的ORC格式进行测试,结果如下。
Presto介绍一、Presto出现背景Presto是Facebook在2012年开发的,是专为Hadoop打造的一款数据仓库工具。...2012年秋季,Facebook开发Presto,目前该项目在Facebook中运行超过30000个查询,每日处理数据PB以上。Presto的查询速度是Hive的5-10倍。...Presto官网地址:https://prestodb.io图片二、Presto特点多数据源Presto可以支持MySQL、PostgreSQL、cassandra、Hive、Kafka等多种数据源查询...但是Presto不支持存储过程,不适合大表Join操作,因为Presto是基于内存的,多张大表关联可能给内存带来压力。...Presto性能是Hive的10倍以上。
233酱准备不定时持续更新这个系列,本文主要从Presto的使用举例,Presto的应用场景、Presto的基本概念三个部分来初步介绍Presto。...Presto的使用举例 比如说,你想对存储在不同数据源中的数据,如HDFS、Mysql、HBase等通过一个SQL做查询分析,那么只需要把每一个数据源当成是Presto的Connector,对应实现Presto...Presto跑批的限制原因: ? Presto跑批的条件: ? 所以他们提供了Presto on Spark方案,这样做的好处是可以统一用户使用的SQL方言差异,UDF差异。 ?...Presto的基本概念 前面主要谈了Presto的使用场景,下面简要从 Presto的架构和基本术语上介绍Presto。 Presto架构 Presto的架构图如下: ?...Coordinator Presto中的Coordinator节点负责解析SQL语句,生成并优化物理执行计划,管理Presto worker节点。它是Presto运行的“大脑”。
采用建表过程中,直接:stored as orc,就可以指定。 然而用传统文本文件导入的方式,再进行查询测试,如select count(*) from table XX....则会出现:Failed with exception java.io.IOException:java.io.IOException: Malformed ORC file的问题。...找到解决办法,由于TXT文档导入,无法生成ORC数据结构,所以需要先导入临时表,再从临时表中再导到ORC表中。
一、Presto简介 1、PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。...CDH 5 支持以下文件类型:Text, SequenceFile, RCFile, ORC 此外,需要有远程的Hive元数据。...二、Presto安装部署 1、下载presto tar包: https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.189/...如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。...三、部署presto client 1、下载: https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.189/presto-cli
ORC文件格式 在Hive 0.11.0版本引入此功能 ORC 是 Optimized Row Columnar 的缩写,ORC 文件格式提供一种高效的方法来存储Hive数据。...当Hive读取,写入和处理数据时,使用 ORC 文件格式可以提高性能。...state string, zip int ) STORED AS orc tblproperties ("orc.compress"="NONE"); 除此之外,还可以为表指定压缩算法: CREATE...tblproperties ("orc.compress"="Zlib"); 通常不需要设置压缩算法,因为Hive会设置默认的压缩算法 hive.exec.orc.default.compress=...我们通常的做法是将 HDFS 中的数据作为文本,在其上创建 Hive 外部表,然后将数据以 ORC 格式存储在Hive中: CREATE TABLE Addresses_ORC STORED AS ORC
第3章 Presto优化 3.1 数据存储 1)合理设置分区 与Hive类似,Presto会根据元信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。...2)使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。...TBLPROPERTIES ("orc.compress"="SNAPPY"); 先将数据灌入orc表,然后更换表名 insert overwrite table bdc_dm.res_category_orc...3.4 注意事项 ORC和Parquet都支持列式存储,但是ORC对Presto支持更好(Parquet对Impala支持更好) 对于列式存储而言,存储文件为二进制的,对于经常增删字段的表,建议不要使用列式存储...对比数据仓库,dwd层建议不要使用ORC,而dm层则建议使用。
Presto优化与Impala对比一、Presto优化1、数据存储一般Presto与Hive整合使用,针对这种使用情况有如下几点优化建议:合理设置分区合理设置分区在读取数据时可以针对分区数据读取...,可以减少Presto数据读取量,提升查询性能。...使用列式存储Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。...使用Join语句时将大表放在左边使用Join语句时将大表放在左边Presto中join的默认算法是broadcast join,即将join左边的表分割到多个worker,然后将join右边的表数据整个复制一份发送到每个...二、Presto与Impala对比Impala性能比Presto相对来说要快一些,两者都对内存消耗比较大,虽然Impala速度快但是Presto支持的数据源丰富。
千万不要以为Presto可以解析SQL,那么Presto就是一个标准的数据库。 Presto被设计为数据仓库和数据分析产品:数据分析、大规模数据聚集和生成报表。...遇到过的问题 如何加快在Presto上的数据统计 很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。...若要提高数据统计的速度,可考虑把Mysql中相关的数据表定期转移到HDFS中,并转存为高效的列式存储格式ORC。...CREATE TABLE IF NOT EXISTS table_1 ( id INTEGER, ........ partition_date INTEGER )WITH ( format = 'ORC...ORC格式 Presto中对ORC文件格式进行了针对性优化,但在impala中目前不支持ORC格式的表,hive中支持ORC格式的表,所以想用列式存储的时候可以优先考虑ORC格式。
使用正常的org.apache.orc.mapred.OrcInputFormat读orc文件时每行返回的值是: null {"name":"123","age":"456"} null {...即返回: 123 456 456 789 【重写InputFormat,单文件读取】 package is.orc; import org.apache.hadoop.conf.Configuration...; import org.apache.orc.mapred.OrcInputFormat; import org.apache.orc.mapred.OrcMapredRecordReader; import...org.apache.orc.mapred.OrcStruct; import org.apache.orc.Reader; import org.apache.orc.Reader.Options;...对应到orc格式时没找到官方提供的包,只能自己写一个。
utm_source=tag-newest 5.1 如何加快在Presto上的数据统计 很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。...若要提高数据统计的速度,可考虑把Mysql中相关的数据表定期转移到HDFS中,并转存为高效的列式存储格式ORC。...CREATE TABLE IF NOT EXISTS table_1 ( id INTEGER, ........ partition_date INTEGER )WITH ( format = 'ORC...因为有了分区字段作为查询条件,就能帮助Presto避免全区扫描,减少Presto需要扫描的HDFS的文件数。...5.11 ORC格式 Presto中对ORC文件格式进行了针对性优化,但在impala中目前不支持ORC格式的表,hive中支持ORC格式的表,所以想用列式存储的时候可以优先考虑ORC格式。
Presto安装搭建一、Presto Server安装Presto的安装搭建可以参照官网:https://prestodb.io/docs/current/installation/deployment.html.../presto-server-0.259.tar.gz[root@node3 software]# mv presto-server-0.259 presto-0.2594、创建”data”目录在node3...presto[root@node3 presto-0.259]# chmod +x presto3、启动Presto cli 在node3上执行如下命令:[root@node3 ~]# cd /software.../presto-0.259/[root@node3 presto-0.259]# ....执行如下查询命令:#查看Hive中的库presto:default> show schemas;#查看表presto:default> show tables;#查询数据presto:default>
Presto Connector连接器Presto Connector支持从多种数据源读取数据,例如:Hive、MySQL、Redis、Kudu、Kafka等。.../presto --server node3:8080 --catalog mysql --schema presto_db#查询所有schema信息,就是mysql中所有的库信息presto:presto_db...“type”:指定presto中字段的类型,更多类型参照:Kafka Connector — Presto 0.277 Documentation以上Presto映射读取Kafka数据的配置文件需要在每台...3 --replication-factor 32.3、启动Presto集群,启动Presto客户端#启动Presto集群[root@node3 ~]# /software/presto-0.259/...-0.259/bin/launcher run#启动Presto客户端[root@node3 presto-0.259]# cd /software/presto-0.259[root@node3 presto
天穹 Presto 也对 Iceberg Connector 做了一系列的功能增强,包括 ORC 存储格式支持(PR-16391)、Timestamp With Time Zone 类型支持、Alluxio...3.3 大文件 ORC 统计信息读取优化 Presto 在读取 ORC 文件时,会先读取文件的 Stripe 统计信息,用于优化 ORC 的数据读取,但是如果 ORC 文件比较大,同时文件数量又比较多的情况下...天穹 Presto 采用了以下的方案来尽量避免这个问题:对于来自同一个 ORC 大文件的 Splits,避免重复读取文件的 Stripe 统计信息。...SplitFilerOperator 会先读取一次 ORC 文件的 Stripe 统计信息,生成新的 ORC Splits,新的 Splits 包含了利用 Stripe 统计信息过滤优化后的数据读取地址...,后续 ORC Splits 分发至 Worker 中执行时,无需再读取 Stripe 统计信息,直接读取数据即可。
天穹Presto也对Iceberg Connector做了一系列的功能增强,包括ORC存储格式支持(PR-16391)、Timestamp With Time Zone类型支持、Alluxio Local...3.3 大文件ORC统计信息读取优化 Presto在读取ORC文件时,会先读取文件的Stripe统计信息,用于优化ORC的数据读取,但是如果ORC文件比较大,同时文件数量又比较多的情况下,StripeStatistics...天穹Presto采用了以下的方案来尽量避免这个问题:对于来自同一个ORC大文件的Splits,避免重复读取文件的Stripe统计信息。...SplitFilerOperator会先读取一次ORC文件的Stripe统计信息,生成新的ORC Splits,新的Splits包含了利用Stripe统计信息过滤优化后的数据读取地址,后续ORC Splits...天穹内部环境测试结果显示该方案能减少50%左右的StripeStatistics对象内存占用,原先造成OOM的ORC查询,采用新方案的实现后也可以正常执行完成,目前正在上线生产环境中。
表统计 Presto支持基于统计的查询优化。为了使查询能够利用这些优化,Presto必须具有该查询中表的统计信息。 表统计信息通过连接器提供给查询计划者。...Presto会根据查询中的过滤谓词,尝试选择由最少数量的分区组成的table layout。...可以使用SHOW STATS for命令通过Presto SQL界面显示表统计信息。 ?...每个计划片段均由单个或多个Presto节点执行。片段分离代表Presto节点之间的数据交换。片段类型指定Presto节点如何执行片段以及片段之间的数据分配方式. SINGLE 片段在单个节点上执行....使用VERBOSE选项时,将提供更详细的信息和低级别的统计信息;要了解这些内容,需要了解Presto内部和实现细节。 可以看到每个阶段花费的CPU时间以及该阶段中每个计划节点的相对成本。
-0.191.tar.gz 下载路径:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.191/presto-server...4、配置presto 在我们解压好的目录下创建一个etc文件夹,etc主要需要配置以下内容 Node Properties: environmental configuration specific...,下载链接为: https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.191/presto-cli-0.191-executable.jar...(3)下载下来后改个名字为presto,放在bin目录下,然后给个执行权限:chmod +x presto ,如下图 ?.../presto --server localhost:8080 --catalog hive --schema default (5)如果要关闭presto服务,执行:bin/launcher stop
命令行 Client 的安装 4、Presto 的基本使用 5、Presto可视化客户端的安装 6、Presto的优化 6.1 数据存储 6.1.1 合理设置分区 6.1.2 使用 ORC 格式存储...6.1.2 使用 ORC 格式存储 Presto 对 ORC文件 读取进行了特定优化,因此,在 Hive 中创建 Presto 使用的表时,建议采用 ORC 格式存储。...相对于 Parquet 格式,Presto 对 ORC 格式支持得更好。...中不支持 insert overwrite语法,只能先delete,然后insert into 6.4.11 ORC 格式 Presto 中对 ORC 文件格式进行了针对性优化,但在 impala 中目前不支持...ORC格式的表,hive中支持 ORC 格式的表,所以想用列式存储的时候可以优先考虑ORC格式 6.4.12 PARQUET 格式 Presto 目前支持 parquet 格式,支持查询
ORC实例总结 总结 因为API茫茫多,逻辑上的一些概念需要搞清,编码时会容易很多。 JIT的运行实体使用LLVMOrcCreateLLJIT可以创建出来,逻辑上的JIT实例。...LLVMShutdown(); return MainResult; } ORC完整 //===------ OrcV2CBindingsBasicUsage.c - Basic OrcV2 C Bindings
Facebook称Presto的性能比Hive要好上10倍多。2013年Facebook正式宣布开源Presto。 Presto架构 ?...,合理的分区能减少Presto数据读取量,提升查询性能。...使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。...使用压缩 数据压缩可以减少节点间数据传输对IO带宽压力,对于即席查询需要快速解压,建议采用snappy压缩 预先排序 对于已经排序的数据,在查询的数据过滤阶段,ORC格式支持跳过读取不必要的数据。...Impala性能稍领先于presto,但是presto在数据源支持上非常丰富,presto对SQL的支持上也更多一些。