您的位置:首页 > 其它

hive命令行小窍门

2015-08-10 16:41 197 查看
1.用户不需要退出hive CLi就可以执行bash shell命令,只要在命令前加!并且以分号结尾就可以了

hive> ! /bin/echo "hello world";
"hello world"
hive> ! pwd;
/home/me/hivetest


hive CLI中不能使用需要用户进行输入的交互式命令,而且不支持shell的“管道”功能和文件名的自动补全功能。例如,

! ls *.hql;


这个命令表示的是查找文件名为*.hql的文件,而不是表示显示以。hql结尾的所有文件。

2.在hiveCLI中执行Hadoop的dfs命令,只需要将hadoop命令的关键字hadoop去掉,然后以分号结尾就可以;

hive> dfs  -ls / ;


这种命令的方式实际比在shell中直接执行hadoop dfs的命令更高效。因为hive不会重新起动jvm实例而是在hive的当前进程中完成。

hive使用--来进行注释。

3.输出列名。

hive> set hive.cli.print.header=true;


4.数据库名字大概是h开头的
hive>show databases like 'h.*';
human


5.删除库的时候后面加关键字“CASCADE”,hive会先删除该库中的所有表在删除数据库。默认的关键字为“RESTRICT“意思是,用户必须先删除该库中的所有表这个操作才会成功。
hive> DROP DATABASE IF EXISTS  testdb CASCADE;


6.列出非当前数据库下的表

hive> show tables in mydb;
hive> show tables 'my.*'


7.查询表的详细信息

hive> descibe extended mydb.testtable
使用formatted代替extended可以得到更丰富的信息

8.只查看某一列的信息,只需要写出列名

hive> desc mydb.testtable.col1


9.严格检查查询语句的条件中是否添加了分区的查询条件
hive>set give.mapred.mode=strict;
设置之后如果对分区表进行查询而where子句没有加分区过滤,将会禁止提交这个任务。与其相反的关键字是”nonstrict“

10hive不优先进入mr的设置

set hive.exec.mode.local.auto=true;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: