(44)Presto 命令行 Client 安装

1. 命令行 Client 安装
1 )下载 Presto 的客户端
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.196/presto-cli-0.196-
executable.jar
2 )将 presto-cli-0.196-executable.jar 上传到 hadoop102 /opt/module/presto 文件夹下
3 )修改文件名称
[atguigu@hadoop102 presto]$ mv presto-cli-0.196-executable.jar
prestocli
4 )增加执行权限
[atguigu@hadoop102 presto]$ chmod +x prestocli
5 )启动 prestocli
[atguigu@hadoop102 presto]$ ./prestocli --server hadoop102:8881
--catalog hive --schema default
6 Presto 命令行操作
Presto 的命令行操作,相当于 Hive 命令行操作。每个表必须要加上 schema
例如:
select * from schema.table limit 100
2.可视化 Client 安装
1 )将 yanagishima-18.0.zip 上传到 hadoop102 /opt/module 目录
2 )解压缩 yanagishima
[atguigu@hadoop102 module]$ unzip yanagishima-18.0.zip
cd yanagishima-18.0
3 )进入到 /opt/module/yanagishima-18.0/conf 文件夹,编写 yanagishima.properties 配置
[atguigu@hadoop102 conf]$ vim yanagishima.properties
添加如下内容
jetty.port=7080
presto.datasources=atguigu-presto
presto.coordinator.server.atguigu-presto=http://hadoop102:8881
catalog.atguigu-presto=hive
schema.atguigu-presto=default
sql.query.engines=presto
4 )在 /opt/module/yanagishima-18.0 路径下启动 yanagishima
[atguigu@hadoop102 yanagishima-18.0]$
nohup bin/yanagishima-start.sh >y.log 2>&1 &
5 )启动 web 页面
http://hadoop102:7080
看到界面,进行查询了。
6 )查看表结构

 

这里有个 Tree View ,可以查看所有表的结构,包括 Schema 、表、字段等。
比如执行 select * from hive.dw_weather.tmp_news_click limit 10 ,这个句子里 Hive 这个
词可以删掉,是上面配置的 Catalog

 

每个表后面都有个复制键,点一下会复制完整的表名,然后再上面框里面输入 sql 语句,
ctrl+enter 键执行显示结果

 

3 Presto 优化之数据存储
1.3.1 合理设置分区
Hive 类似, Presto 会根据元数据信息读取分区数据,合理的分区能减少 Presto 数据
读取量,提升查询性能。
1.3.2 使用列式存储
Presto ORC 文件读取做了特定优化,因此在 Hive 中创建 Presto 使用的表时,建议采
ORC 格式存储。相对于 Parquet Presto ORC 支持更好。
1.3.3 使用压缩
数据压缩可以减少节点间数据传输对 IO 带宽压力,对于即席查询需要快速解压,建议
采用 Snappy 压缩。
Presto 优化之查询 SQL
1.4.1 只选择使用的字段
由于采用列式存储,选择需要的字段可加快字段的读取、减少数据量。避免采用 * 读取
所有字段。

 

1.4.2 过滤条件必须加上分区字段
对于有分区的表, where 语句中优先使用分区字段进行过滤。 acct_day 是分区字段,
visit_time 是具体访问时间。

 

1.4.3 Group By 语句优化
合理安排 Group by 语句中字段顺序对性能有一定提升。将 Group By 语句中字段按照每
个字段 distinct 数据多少进行降序排列。

 1.4.4 Order by 时使用 Limit

Order by 需要扫描数据到单个 worker 节点进行排序,导致单个 worker 需要大量内存。
如果是查询 Top N 或者 Bottom N ,使用 limit 可减少排序计算和内存压力。

 

1.4.5 使用 Join 语句时将大表放在左边
Presto join 的默认算法是 broadcast join ,即将 join 左边的表分割到多个 worker ,然后
join 右边的表数据整个复制一份发送到每个 worker 进行计算。如果右边的表数据量太大,
则可能会报内存溢出错误。

 

1.5 注意事项
1.5.1 字段名引用
避免和关键字冲突: MySQL 对字段加反引号 ` Presto 对字段加 双引号分割
当然,如果字段名称不是关键字,可以不加这个双引号。
1.5.2 时间函数
对于 Timestamp ,需要进行比较的时候,需要添加 Timestamp 关键字,而 MySQL 中对
Timestamp 可以直接进行比较。
/*MySQL 的写法 */

1.5.3 不支持 INSERT OVERWRITE 语法
Presto 中不支持 insert overwrite 语法,只能先 delete ,然后 insert into
1.5.4 PARQUET 格式
Presto 目前支持 Parquet 格式,支持查询,但不支持 insert
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据开发工程师-宋权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值