presto简单介绍

presto是一个分布式的sql交互式查询引擎。可以达到hive查询效率的5到10倍。支持多种数据源的秒级查询。

presto是基于内存查询的,这也是它为什么查询快的原因。除了基于内存,presto还使用了

    • 向量计算,
    • 动态编译执⾏计划
    • 优化的ORC和Parquet Reader技术

从而优化查询的速度。

    1. presto和hive的对比
      hive和presto是针对不同使用场景的。presto虽然查询很快,但是也不是适用于所有的查询场景。
      比如做多张大表的关联查询,
      由于presto是基于内存查询的。做大表关联查询时,数据要加载到内存中,假如使用presto查询超过了几分钟才会有返回。
      且严重影响集群的性能。这就违背了presto交互式查询的初衷,交互式就是要做到近实时查询与返回。
      所以,presto不适合做多张大表的join操作或者ETL操作。这种情况就该使用hive了。
      另外,hive只能做hdfs查询(es等需要插件支持),而presto支持了mysql,pg,kafka,redis等。
      总之,presto是支持多数据源的查询利器。
    2. 适用场景
      presto不应作为etl工具,和做多表关连查询。而应该更多的作为单表的查询操作。
    3. 结合我们的业务场景,不难想到,presto适用的场景是

      1. 在数仓的前两层,presto可以做验数,查询某条数据使用;
      2. 业务人员和数据分析师在操作生成好的事实表查询时,使用presto,体验会有很大的提升 

presto的使用

           presto的官方文档写的十分清楚,相信大家结合文档,可以很快的把一句hive sql 转化为presto sql

https://prestodb.github.io/docs/current/

    • json解析
    • 因为我们解析log最常用的就是json解析。
      我们单独说下json解析的方法。直接上代码:

      --  employee表的xjson字段,只有一条数据
      [{"name":"王二","sex":"男","age":"25"},{"name":"李四","sex":"男","age":"47"}]

      取出"王二"的年龄:

    • hive sql为:

      select
      get_json_object(xjson,'$.[0].age')
      from
      employee limit 1;

      hive 查询结果为:

    • presto 对json的处理函数是 json_array_get() 和 json_extract()

      -- 我们分步操作,先用 json_array_get()取出jsonArray的第一个元素
      select
      json_array_get(xjson,0)
      from
      employee
      limit 1;

      presto查询结果:  {"name":"王二","sex":"男","age":"25"}

      -- 再介绍下用 json_extract() 在 {"name":"王二","sex":"男","age":"25"} 中查询 "王二"的年龄
      -- json_extract 和 hive中的get_json_object类似
      select
      json_extract('{"name":"王二","sex":"男","age":"25"}', '$.age')

      presto查询结果是:

          总结:presto提供了解析json的函数, json_array_get() 和 json_extract(),对于jsonArray,需要用 json_array_get() 获取到从0开始的第几个元素。
                     对与jsonObject和hive的get_json_object()的用法一致。
 
      hive函数 get_json_object,请参考我的另一篇文章 https://www.cnblogs.com/drjava/p/10486134.html
 

presto调研和json解析函数的使用的更多相关文章

  1. 大数据学习day28-----hive03------1. null值处理,子串,拼接,类型转换 2.行转列,列转行 3. 窗口函数(over,lead,lag等函数) 4.rank(行号函数)5. json解析函数 6.jdbc连接hive,企业级调优

    1. null值处理,子串,拼接,类型转换 (1) 空字段赋值(null值处理) 当表中的某个字段为null时,比如奖金,当你要统计一个人的总工资时,字段为null的值就无法处理,这个时候就可以使用N ...

  2. oracle json 解析函数

    CREATE OR REPLACE TYPE ty_tbl_str_split IS TABLE OF ty_row_str_split;CREATE OR REPLACE TYPE ty_row_s ...

  3. Hive sql和Presto sql的一些对比

    最近由于工作上和生活上的一些事儿好久没来博客园了,但是写博客的习惯还是得坚持,新的一年需要更加努力,困知勉行,终身学习,每天都保持空杯心态.废话不说,写一些最近使用到的Presto SQL和Hive ...

  4. 浅谈Android项目----JSON解析(4种解析技术详解)

    json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...

  5. Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比

    介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...

  6. mysql(5.6及以下)解析json

    转自:https://blog.csdn.net/weixin_33979203/article/details/87621768 #json解析函数 DELIMITER $$ DROP FUNCTI ...

  7. Hive解析Json数组超全讲解

    在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析.接下来就聊聊Hive中是如何 ...

  8. Json解析案例-teachers数据集

    背景: 通过平台执行接口时,接口往往返回的JSON串,所以平台要能提供方便快捷的JSON解析函数. 一.Json字符串: 1 { 2 "lemon": { 3 "teac ...

  9. Hive入门笔记---2.hive函数大全

    Hive函数大全–完整版 现在虽然有很多SQL ON Hadoop的解决方案,像Spark SQL.Impala.Presto等等,但就目前来看,在基于Hadoop的大数据分析平台.数据仓库中,Hiv ...

随机推荐

  1. iOS.mach_absolute_time

    1. Technical Q&A QA1398 Mach Absolute Time Units https://developer.apple.com/library/mac/qa/qa13 ...

  2. JoyOI1940 创世纪

    一道基环树+树形\(DP\) 原题链接 显然输入的是内向基环树森林,且我们可以单独考虑每一棵基环树. 既然是基环树,自然先\(dfs\)找环,然后随便找环上的一点\(r\),将其与\(A[r]\)的边 ...

  3. 1.2 Java中的注释

    Eclipse中的快捷键  单行注释   Ctrl+/ 多行注释    Ctrl+Shift+/  文档注释    Shift +Alt+j /** * @author Lenovo * 文档注释 * ...

  4. [Spark]What's the difference between spark.sql.shuffle.partitions and spark.default.parallelism?

    From the answer here, spark.sql.shuffle.partitions configures the number of partitions that are used ...

  5. robot framework 中should be true 与should contain 的区别

    should be true  是否等于:判断是否should contain  是否包含 a是否包含b

  6. sql server profiler 工具使用 sql 语句性能分析

    https://www.cnblogs.com/knowledgesea/p/3683505.html

  7. STL基础2:vector中使用结构体

    #include <iostream> #include <vector> #include <numeric> #include <algorithm> ...

  8. myeclipse 上安装 Maven3

    myeclipse 上安装 Maven3   环境准备: JDK 1.6 Maven 3.0.4 myeclipse 8.6.1 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Mav ...

  9. 熟悉JSON

    JSON是什么 JSON ( JavaScript Object Notation) ,是一种数据交互格式. 为什么有这个技术 Json之前,大家都用 XML 传递数据.XML 是一种纯文本格式,所以 ...

  10. 得到一个Object的属性

    private static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo ...