本文主要是介绍(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 。
这篇关于(44)Presto 命令行 Client 安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!