1.一般用presto查询数据,因为快,一般用hive开发数据
2.presto调取表格的方式是
from
a.b.c
hive是from b.c 只需要库.表
3.current_date等日期相关的功能,presto可以用,但这类函数的写法hive往往不通用,hive用的是‘${yesterday}’等。
一些日期的不同,例如我们在presto可以使用
format_datetime(date_add(‘day’,-1,current_date),‘yyyyMMdd’)自动获取昨天的日期,hive是不能用的,hive中可以改为:
date_format(date_add(current_date,-1),‘yyyyMMdd’)
类似的,date_diff 不同版本的presto 和hive也是不同的,具体如下
presto:date_dff(‘day’,date1,date2)
hive : datediff(date1,date2)
4.hive 最后是需要分号的; presto无
5.presto 可以用double,不能用float,presto hive都可以用varchar,但presto不能用string
例如一个字段长度20,presto 用cast(a as varchar(3))能识别出来,但 hive不可以。为了兼容,可以都写为cast(a as varchar(30))
6.新版本的hive 为了安全性,必须要对数据进行分区,要选定etl_dt,presto暂无要求
7.hive 在使用order时候需要配合limit使用,presto无要求
8.presto可以使用group by 1,2,3等简写,hive 是不能识别出来123简写的。
特别要注意的是,在写一些复杂的查询语句时,“as"以前的部分都要group的,不要偷懒只group句子中的一部分
牢记一些不同,能够显著的提高工作效率