博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Presto Functions
阅读量:6672 次
发布时间:2019-06-25

本文共 1962 字,大约阅读时间需要 6 分钟。

hot3.png

Presto的是什么?优势是什么呢?从官方文档中我们了解到

Presto是一个分布式SQL查询引擎,用于查询分布在一个或多个不同数据源中的大数据集。

千万不要以为Presto可以解析SQL,那么Presto就是一个标准的数据库。
Presto被设计为数据仓库和数据分析产品:数据分析、大规模数据聚集和生成报表。这些工作经常通常被认为是线上分析处理操作。

所以说,当公司业务有跨库分析时(一般情况是,业务数据库分布在各个部门),一些数据需要配合其他部门的数据进行关联查询,这个时候可以考虑Presto。但是目前,对于MySQL统计查询在性能上有瓶颈。可考虑将数据按时间段归档到HDFS中,以提高统计效率。

 

Presto函数:https://www.alibabacloud.com/help/zh/doc-detail/64038.htm;

位运算函数
Presto提供了如下几种位运算函数: 

函数	语法	说明bit_count	bit_count(x, bits) → bigint	返回x的补码中置1的位数bitwise_and	bitwise_and(x, y) → bigint	位与函数bitwise_not	bitwise_not(x) → bigint	取非操作bitwise_or	bitwise_or(x, y) → bigint	位或函数bitwise_xor	bitwise_xor(x, y) → bigint	抑或函数bitwise_and_agg	bitwise_and_agg(x) → bigint	返回x中所有值的与操作结果,x为数组bitwise_or_agg	bitwise_or_agg(x) → bigint	返回x中所有值的或操作结果,x位数组示例SELECT bit_count(9, 64); -- 2SELECT bit_count(9, 8); -- 2SELECT bit_count(-7, 64); -- 62SELECT bit_count(-7, 8); -- 6

(二)JSON处理对比(转至:https://www.cnblogs.com/cssdongl/p/8394000.html)

Hive
select get_json_object(json, '$.book');

Presto

select json_extract_scalar(json, '$.book');

注意这里Presto中json_extract_scalar返回值是一个string类型,其还有一个函数json_extract是直接返回一个json串,所以使用的时候你得自己知道取的到底是一个什么类型的值.

(三).列转行对比

Hive
select student, score from tests lateral view explode(split(scores, ',')) t as score;

Presto

select student, score from tests cross json unnest(split(scores, ',') as t (score);

简单的讲就是将scores字段中以逗号隔开的分数列比如

80,90,99,80
这种单列的值转换成和student列一对多的行的值映射.

三.复杂Grouping对比

Hive
select origin_state, origin_zip, sum(package_weight) from shipping group by origin_state,origin_zip with rollup;

Presto

select origin_state, origin_zip, sum(package_weight) from shipping group by rollup (origin_state, origin_zip);

用过rollup的都知道,这是从右向左的递减的多级统计的聚合,等价于(如下为Presto写法)

select origin_state, origin_zip, sum(package_weight) from shipping group by grouping sets ((origin_state, origin_zip), (origin_state), ());

其他一些语法有细微的差别可以慢慢了解,当然Hive和Presto底层架构不一样导致Presto比Hive运算速度要快很多,再加上开源的Alluxio缓存更加如虎添翼了.

转载于:https://my.oschina.net/u/3204727/blog/1845113

你可能感兴趣的文章
linux下mysql数据库忘记密码怎么办
查看>>
挺不错的jquery幻灯片
查看>>
浅析《大数据运算》-加减乘除以及模除运算
查看>>
开始nodejs+express的学习+实践(5)
查看>>
在微信小游戏中开发一个贪食蛇
查看>>
通过class获取data-id以及相应的对象
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
SQLServer 2008数据库计算机名更改
查看>>
Tkinter的消息对话框
查看>>
windows 远程桌面kali
查看>>
我的友情链接
查看>>
常见linux系统中RPM包的通用命名规则
查看>>
DELL LATITUDE E6320等笔记本不能识别移动硬盘
查看>>
Debian6.0.7的archive mirror列表真接地气
查看>>
让自己的程序支持CD刻录功能
查看>>
elasticsearch使用java api批量插入数据
查看>>
Linux系统新手学习的11点建议
查看>>
python开发支持万台设备的分布式监控软件视频教程
查看>>
手机上的html
查看>>