presto调研和json解析函数的使用

 

presto简单介绍

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

          presto是基于内存查询的,这也是它为何查询快的缘由。除了基于内存,presto还使用了java

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

          从而优化查询的速度。mysql

    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/git

    • json解析
    • 由于咱们解析log最经常使用的就是json解析。
      咱们单独说下json解析的方法。直接上代码:
      github

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

      取出"王二"的年龄:redis

    • hive sql为:sql

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

      hive 查询结果为: 25json

    • 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查询结果是:25

       

           总结:presto提供了解析json的函数,  json_array_get() 和  json_extract(),对于jsonArray,须要用 json_array_get() 获取到从0开始的第几个元素。
                     对与jsonObject和hive的 get_json_object()的用法一致。
 
      hive函数 get_json_object,请参考个人另外一篇文章  http://www.javashuo.com/article/p-fmulaque-bg.html
相关文章
相关标签/搜索