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. 可以搜索局域网内的所有IP地址的软件

    几乎都用现有的工具,直接扫描,这里我已python为例,搜索一下局域网内所有活动IP,基本原理就是ping,对返回的结果进行分析,从而判断对应ip是否活动,代码很简单,实验环境win10+python ...

  2. 洛谷1288 取数游戏II

    原题链接 因为保证有\(0\)权边,所以整个游戏实际上就是两条链. 很容易发现当先手距离\(0\)权边有奇数条边,那么必胜. 策略为:每次都将边上权值取光,逼迫后手向\(0\)权边靠拢.若此时后手不取 ...

  3. LibreOJ #6002. 「网络流 24 题」最小路径覆盖

    #6002. 「网络流 24 题」最小路径覆盖 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...

  4. [Groovy] 创建Excel,追加Excel

    package ScriptLibrary import java.awt.Color import java.awt.GraphicsConfiguration.DefaultBufferCapab ...

  5. keepalived+nginx+tomcat+redis集群环境部署

    1.所需软件.jar包.配置文件下载:http://pan.baidu.com/s/1dFgntst 2.环境说明: centos6.5  64位 主节点:192.168.40.121 副节点:192 ...

  6. git学习笔记:一台电脑上配置两个git账户

    如何在一台电脑上配置两个git账户,现在云端仓库很多,有开源中国的 gitee.com 微软的 github.com 还有 gitlab.com 和 bitbucket.org 等等,下面是具体步骤 ...

  7. oracle的在没有安装服务端连接远处服务端的方法

    1.找到oracle的安装目录.如:C:\oracle\product\10.2.0\db_1\network\ADMIN 2.找到tnsnames.ora文件 3. 其中中文部分是需要修改的部分,除 ...

  8. java JNI 实现原理 (二) Linux 下如何 load JNILibrary

    在博客java JNI (一)虚拟机中classloader的JNILibrary 中讨论了java中的Library 是由classloader 来load的,那我们来看看 classloader是 ...

  9. 2018.12.30 bzoj3027: [Ceoi2004]Sweet(生成函数+搜索)

    传送门 生成函数好题. 题意简述:给出n个盒子,第iii个盒子里有mim_imi​颗相同的糖(但不同盒子中的糖不相同),问有多少种选法可以从各盒子中选出数量在[a,b][a,b][a,b]之间的糖果. ...

  10. java 后台 post请求 携带参数 远程操作 调用接口

    package com.huayu.tizong.matchteam.util; import java.io.BufferedReader; import java.io.IOException; ...