通过上一小节对Hive-Cli的一些操作,可以掌握基本的Hive的语法了,本小节需要讲解一下Beeline客户端的一些操作,其实Beeline的语法和Hive客户端的基本一致,但是Hive自身的客户端只能自己用,别人连不上去,要想多个用户访问,必须使用HiveServer2。话不多说,直接进入Beeline-Cli输入一些语句来看一下结果,
$beeline>
$beeline>!help //查看帮助
$beeline>!close //关闭当前连接
$beeline>!connect jdbc:hiveserver2://localhost:10000/myhive
$beeline>!tables; //显式表
$beeline>show tables; //展示表
$beeline>!sh clear ; //执行shell脚本命令
$beeline>!quit; //退出beeline终端
$beeline>select count(*) from t1 ; //查询表t1的行数
$beeline>select max(*) from t1 ; //查询表t1的最大值
$beeline>select min(*) from t1 ; //查询表t1的最小值
$beeline>select sum(*) from t1 ; //查询表t1所有value值的和
$beeline>select avg(*) from t1 ; //查询表t1的平均值
limit的使用,Hive没有像MySql那样的limit start,end那样的写法实现分页,所以需要使用别的方式来实现分页。Hive使用limit的前一个参数表示的是去掉前几个数值,从下一个数值开始计数,第二个参数表示的是查询数值的个数。用limit分页明显减少shuffle的量,因为如果不用limit的话,所有的Map数据都到Reduce端上去了。
Hive中的order by跟传统的hql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有Hive的hql中制定了order by所有的数据都会到同一个reducer进行处理(不管有多少Map,也不管文件有多少的block只会启动一个reducer)。但是对于大量数据这将会消耗很长的时间去执行。
这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict&#