使用presto+airpal+hive打造即席查询工具

2023-11-10

0X01 前言

即席查询怎么做、怎么选型!这次用的是presto来做尝试。

缘起

公司是Impala的深度用户,我主要负责Impala的各方面的工作,最近因为一些特殊原因需要对现有的体系进行一些调整,需要做出来即席查询的组件,在spark sql、impala、dril、impala之间做了一些调研后,暂时决定使用presto来做一些尝试。

原因有下面几个:

  • 没有和cdh绑定那么深,用起来比较简单。
  • 可以同时连mysql、hive等数据源,并且可以做join,这样就不用为了一些临时的需求导数据了。
  • 需要为小组引入一些新的组件。
  • 个人因素:好玩。

0X02 安装环境

presto需要的jdk版本是1.8。

  • centos6.2(两台,一台coordinator,一台workers)
  • jdk1.8
  • presto-0.150(最新版,下载地址:presto-server-0.150.tar.gz
  • airpal(最新版)

0X03 安装记录

1.基本配置文件

etc/config.properties: presto的基本配置文件,分两种角色,coordinator和workers。两种角色的配置不同,其中coordinator有点类似master节点,workers类似于slave节点。

注意discovery.uri需要配置成coordinator的host。

coordinator:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://host:8080

workers:

coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://host:8080

etc/node.properties:

注意:

  • node.environment集群中的所有节点,该配置项要一致。
  • node.id每台机器的id都应该不一样。
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

etc/jvm.config: JVM的配置项。

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p

2.设置connector

presto可以设置不同的connector,用以连接不同的数据源。我配置了两种:hive和mysql。

需要新建一个目录etc/catalog,然后每种数据源一个配置文件。

hive:

文件名hive.properties。

注意:

  • connector.name:我用的是cdh5,因此选择该连接器。
  • hive.metastore.uri:hive元数据节点
  • hive.config.resources:如果presto安装在集群外的节点,需要copy一下集群中的配置文件,并指定目录。
connector.name=hive-cdh5
hive.metastore.uri=thrift://host:9083
hive.config.resources=/data/presto/etc/cluster/core-site.xml,/data/presto/etc/cluster/hdfs-site.xml

mysql:

connector.name=mysql
connection-url=jdbc:mysql://host:3306
connection-user=zhanghao
connection-password=mima

3.设置启动脚本

需要下载一个jar包,然后重命名为presto,并赋予执行权限。以后可以用它来连接即可。

presto-cli-0.151-executable.jar

4.启动

直接启动使用bin/presto即可

也可以设置连接的catalog和schema。比如:./presto --server localhost:8080 --catalog hive --schema default

5.安装airpal

airpal的安装不难,按照官网的安装即可。

官网地址

0X04 使用

1.基本查询测试

查看hive中的库。

presto> show schemas from hive;
         Schema          
-------------------------
test1
test2
...
test20

(20 rows)

Query 20160805_115300_00021_nk48v, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [20 rows, 238B] [99 rows/s, 1.15KB/s]

查看表信息。

presto> desc hive.trace.apptalk;
   Column   |  Type   |    Comment    
------------+---------+---------------
 content    | varchar |               
 id         | varchar |   
 ...        |   ...   |     
 k          | varchar | Partition Key 
(13 rows)

Query 20160805_115429_00022_nk48v, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [13 rows, 798B] [32 rows/s, 1.96KB/s]

查看mysql表中的数据。

presto> select * from mysql.test.test limit 10;
 id |       name       |                ***                |             ***             |       ***        | *** |          ***        
----+------------------+-------------------------------------+----------------------------------+-------------------------+--------+-------------------------

(10 rows)

2.导出数据

presto可以指定导出数据的格式,但是不能直接指定导出数据的文件地址,需要用Linux的命令支持。

下面是一个带有header的csv数据导出。

bin/presto --execute "sql statement" --output-format CSV_HEADER > test1.csv

3.跨源join

查询mysql和hive的数据,并做join。

这里不再写出sql了。

注意:

  • 需要指定catalog。
  • 不同库之间做join的时候需要主要字段类型,比如userid,在hive中可能是String,在mysql可能是int,这时候需要使用cast转一下格式,然后再做等于的比较。

4.管理界面

默认的管理界面的端口是8080。看着很炫酷。

这里写图片描述

5.airpal

在airpal上提交query倒是也挺方便,但是有不少bug,目测更新的比较慢,跟不上presto的更新速度。用过就知道了…..

这里写图片描述

来源:
http://blog.csdn.net/zhaodedong/article/details/52132318


2016-08-05 20:17:00 hzct

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用presto+airpal+hive打造即席查询工具 的相关文章

  • Spark常用参数解释

    Spark的默认配置文件位于堡垒机上的这个位置 SPARK CONF DIR spark defaults conf 用户可以自行查看和理解 需要注意的是 默认值优先级最低 用户如果提交任务时或者代码里明确指定配置 则以用户配置为先 用户再
  • spark SQL基础教程

    1 sparkSQL入门 sparksql专门用于处理结构化的数据 而RDD还可以处理非结构化的数据 sparksql的优点之一是sparkfsql使用统一的api读取不同的数据 第二个优点是可以在语言中使用其他语言 例如python 另外
  • Spark 配置

    文章目录 1 Spark 配置 1 1 Spark 属性 1 1 1 动态加载Spark属性 1 1 2 查看Spark属性 1 2 环境变量 2 重新指定配置文件目录 3 继承Hadoop集群配置 4 定制的Hadoop Hive配置 1
  • python+django基于Spark的国漫画推荐系统 可视化大屏分析

    国漫推荐信息是现如今社会信息交流中一个重要的组成部分 本文将从国漫推荐管理的需求和现状进行分析 使得本系统的设计实现具有可使用的价 做出一个实用性好的国漫推荐系统 使其能满足用户的需求 并可以让用户更方便快捷地国漫推荐 国漫推荐系统的设计开
  • Cloudera JDBC Driver for Impala 的WITH 子句问题 - 返回列名称而不是实际数据

    我正在使用 Cloudera JDBC Driver for Impala v 2 5 38 和 Spark 1 6 0 来创建 DataFrame 它适用于除WITH子句之外的所有查询 但WITH在我的组织中广泛使用 下面是我的代码片段
  • 根据前面的单词从段落中提取数值

    我正在处理列中的一些大文本字段 经过一些清理后 我得到如下所示的内容 truth val 5 xerb Scale 2 perb Scale 1 我想提取数字 2 我试图匹配字符串 xerb Scale 然后提取 2 我尝试捕获包含 2 的
  • Spark 支持子查询吗? [复制]

    这个问题在这里已经有答案了 当我运行此查询时 我收到此类错误 select from raw 2 where ip NOT IN select from raw 1 org apache spark sql AnalysisExceptio
  • 有没有办法用带参数的sql脚本运行impala shell?

    有没有办法使用带参数的 SQL 脚本运行 impala shell 例如 impala shell f home john sql load sql dir1 dir2 dir3 data file 我收到错误 错误 无法解析参数 f ho
  • 在 hql 脚本中,我们使用“!sh echo ---new line---”来表示相同的 .想知道 impala 中的替代方案来打印 impala 脚本中的任何行吗?

    在 hql 脚本中 我们使用 sh echo new line 来表示相同的 想知道 impala 中的替代方案来打印 impala 脚本中的任何行吗 您可以从 impala 脚本调用 shell 命令行 作为其工作原理的示例 script
  • 阿里技术官亲笔力作:Kafka限量笔记,一本书助你掌握Kafka的精髓

    前言 分布式 堪称程序员江湖中的一把利器 无论面试还是职场 皆是不可或缺的技能 而Kafka 这款分布式发布订阅消息队列的璀璨明珠 其魅力之强大 无与伦比 对于Kafka的奥秘 我们仍需继续探索 要论对Kafka的熟悉程度 恐怕阿里的大佬们
  • 在 aws athena 中按日期时间查询解析 alb 日志时出错

    我已按照链接中提到的步骤在 Athena 中创建 ALB 表 我试图根据日期时间查询日志 但出现以下错误 Query SELECT client ip sum received bytes FROM default alb logs WHE
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 在没有cloudera manager的情况下安装cloudera impala

    请提供在没有cloudera manager的情况下在ubuntu中安装imapala的链接 无法使用官方链接安装 无法使用这些查询找到 impala 包 sudo apt get install impala Binaries for d
  • 用逗号将一个字符串拆分为几列

    例如 我有下表 Block abcdefgh 12kjkjkj 231wewoxyz 我怎样才能将它转换成 Block1 Block2 Block3 abcdefgh 12kjkjkj 231wewoxyz Note 每个 块 最多有 8
  • Presto 中的用户定义函数

    我目前正在使用 Presto 0 80 我必须编写一个用户定义的函数来在选择查询期间将摄氏度转换为华氏度 我使用 Hive QL 做了同样的事情 但想知道我们是否可以在 Facebook Presto 中复制相同的内容 任何帮助将不胜感激
  • 将 Unix 纪元时间转换为扩展 ISO8601

    我有 3 个表 我想使用日期来处理 但是其中一个表包含 unix 纪元格式的日期 以下是 3 个字段的示例 Table1 2017 02 01T07 58 40 756031Z Table2 2017 02 07T10 16 46Z Tab
  • 如何在 Ubuntu 上安装 Impala? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我要安装Impala https impala apache org 在 Ubuntu 实例上 到目前为止 以下方法都不起作用 如何在 U
  • AWS Lambda 错误:无法导入模块“function_name”:没有名为“module._module”的模块

    阅读后请特别查看屏幕截图 我正在 AWS Lambda 上部署一个使用该包的 python 脚本impyla它依赖于包bitarray from impala dbapi import connect 我的Python文件名为authori
  • Presto 数组包含一个喜欢某种模式的元素

    例如 我的表中的一列是一个数组 我想检查该列是否包含包含子字符串 denied 的元素 因此 在中午 12 00 拒绝 被管理员拒绝 等元素都将计数 我相信我将不得不使用 like 来识别模式 这个sql该怎么写呢 使用急板数组函数 htt
  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累

随机推荐

  • dbeaver sqlserver 驱动_免费通用数据库工具DBeaver安装及使用教程

    目录 DBeaver简介 DBeaver的安装 界面功能区简介 MySQL数据源配置 Oracle数据源配置 DBeaver简介 DBeaver 是一个基于 Java 开发 免费开源的通用数据库管理和开发工具 使用非常友好的 ASL 协议
  • linux动态库编译多重依赖,Linux动态库多重依赖

    1 动态库依赖关系 test gt hello gt world 2 源文件 world cpp include void world void printf world n hello cpp include void world voi
  • Unity关于Input的静态函数的使用

    Input GetAxis GetAxis这个函数 接收指定轴向的输入 比如 Horizontal Vertical 返回值在 1到1之间 Input GetKey KeyCode W GetKey这个函数 需要移动或者需要一直按着按键那种
  • 返回类型和return语句

    return语句中之当前正在执行的函数 并将控制权返回到调用该函数的地方 无返回值函数 没有返回值的return语句只能用在返回类型是void的函数中 返回void的函数不要求非得有return语句 因为这类函数最后一句后面会吟诗执行ret
  • 机器学习之人脸识别(Face Recognition)

    机器学习之机器是如何识别人脸 Face Recognition 的 目前 一些机器学习技术已经被广泛应用于人脸识别 人脸支付以及身份认证领域 例如支付宝的FACEID 阿里的Alipay ETC等等 这个领域内的算法多以传统的Eigen F
  • [转]虚拟驾舱Cockpit可选的芯片平台

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 与传统的多芯片
  • redis的多路复用原理

    redis服务端对于命令的处理是单线程的 但是在I O层面却可以同时面对多个客户端并发的提供服务 并发到内部单线程的转化通过多路复用框架实现 一个IO操作的完整流程是数据请求先从用户态到内核态 也就是操作系统层面 然后再调用操作系统提供的a
  • mysql表示数字的数据类型的长度

    在mysql当中表示数字的数据类型 有这么几个 从小到大以此是 tinyint 128 127 smallint 32 768 32767 mediumint 8 388 608 8388607 这三个对应java的数据类型是int类型 i
  • Java-Java绘图坐标体系

    坐标体系介绍 坐标原点位于左上角 以像素为单位 在java坐标系中 第一个是x坐标 表示当前位置为水平方向 距离坐标原点x个像素 第二个是y坐标 表示当前位置为垂直防线 距离坐标原点y个像素 像素介绍 像素是一个密度单位 计算机在屏幕上显示
  • httpservletresponse 获取body_获取请求体数据

    将一些获取请求体数据 请求体数据post请求的时候才有
  • 关于github在vscode上的认证以及密钥缓存机制

    今天在向GitHub仓库提交代码的时候收到了这封邮件 说是使用密码的认证将要被舍弃了 提醒我换成两步验证 2FA 切换成两步验证很顺利 突然很好奇GitHub密码在Mac上是怎么保存的 vscode的设置里有两个选项 如下图 保存密码的地方
  • html如何添加环绕标签,html给定标签选项并添加标签(附代码)

    这篇文章给大家介绍的内容是关于html给定标签选项并添加标签 附代码 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 HTML haveTags addTags 返回的数组 CSS havetags span addtags
  • ctfshow 萌新web系列--3

  • Linux shell判断含有通配符的文件是否存在

    方法一 使用 ls jpg gt dev null 命令 if ls jpg gt dev null then echo 当前文件夹下 未找到 jpg文件 else echo 当前文件夹下 存在 jpg文件 fi 方法二 使用 ls jpg
  • Descriptors cannot not be created directly

    1 Descriptors cannot not be created directly 在运行诸如深度学习python等程序时 如mmdetection mmdetection3d中的程序 会出现报错 Descriptors cannot
  • 后氧传感器正常数据_氧传感器电压多少正常?氧传感器数据流分析介绍

    氧传感器作用是什么 氧传感器用以检测排气中氧的浓度 并向ECU发出反馈信号 再由ECU控制喷油器喷油量的增减 从而将混合气的空燃比控制在理论值附近 氧传感器是利用陶瓷敏感元件测量汽车排气管道中的氧电势 由化学平衡原理计算出对应的氧浓度 达到
  • Redis启动与关闭

    安装redis之后 在命令行窗口中输入 redis server redis windows conf 启动redis 关闭命令行窗口就是关闭 redis redis作为windows服务启动方式 redis server service
  • Xilinx_RAM_IP核的使用

    Xilinx RAM IP核的使用 说明 单口RAM 伪双口RAM 双口RAM的读写 以及RAM资源占用的分析 环境 Vivado2018 3 IP核 Block Memory Generator 参考手册 UG473 7 Series F
  • 人力资源平台项目总结(2)

    目录 1 路由和页面 1 1 左侧菜单的显示逻辑 设置菜单图标 重点 2 组织架构 2 1 认识组织架构 2 2 将树形的操作内容单独抽提成组件 2 3 获取组织架构数据 并进行树形处理 重点 2 4 删除部门功能实现 2 5 新增部门功能
  • 使用presto+airpal+hive打造即席查询工具

    0X01 前言 即席查询怎么做 怎么选型 这次用的是presto来做尝试 缘起 公司是Impala的深度用户 我主要负责Impala的各方面的工作 最近因为一些特殊原因需要对现有的体系进行一些调整 需要做出来即席查询的组件 在spark s