Hive shell命令
001、启动
* 基本命令
/bin/hive {config}
--auxpath : 添加第三方的jar包,作用未知..
--config : 指定hive启动的配置文件,默认读的是 ../conf/hive-site.xml
--service serviceName <service parameters>: 指定hive启动哪种服务。
# serviceName:
* cli:命令行界面 {默认选项}
* hiveserve{2} {-p xx}:这个可以让Hive以提供Trift服务的服务器形式来运行
* metastore:使用这个服务,可以让metastore作为一个单独的进程运行
* 最常用的是第一个,起次是第三个,然后是第二个,剩下还有几个没用过。
--help :查看帮助
--debug :debug模式启动。
# 这两个会在hive-env.sh里面指定好。
HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
HIVE_OPT : Hive options
* 骚命令
hive -e 'hql语句':
从命令行执行指定的HQL语句,不需要分号结束。
可以额外加上:
-S:只显示结果
-v:额外打印出执行的hql语句。
hive -f 'hql脚本':
直接执行某段hql语句输出到控制台。
hive --hiveconf <key=value>:
启动hive的时候,使用给定属性的值
hive --database <basename>:
进入命令行界面,但是直接进入<basename>数据库。
set hive.cli.print.current.db=true;
显示当前所在的数据库
002、Shell语句
- 交互式命令
HIve Cli里面的命令,必须要以`;`结尾,并且在回车以后,上一行命令则无法更改。
退出Cli
quit / exit;
查看修改某个变量
set [-v] | <key> | <key>=<value>
-v : 打印出所有HIve和Hadoop的配置参数
key: 打印出指定key的配置参数
key=value:设置Hive运行时配置参数,优先级最高,相同key,后面的设置会覆盖前面的设置
重置参数
# 初始化为hive-site.xml中的配置。
reset
创建函数
详情见hive操作:函数相关
DistributeCache(Hadoop的分布式缓存)相关操作
add File[S]/Jar[S]/Archive[S] <filepath> * :
向 DistributeCache 中添加一个或过个文件、jar包、或者归档,添加之后,可以在Map和Reduce task中使用。比如,自定义一个udf函数,打成jar包,在创建函数之前,必须使用add jar命令,将该jar包添加,否则会报错找不到类。
list File[S]/Jar[S]/Archive[S] :
列出当前DistributeCache中的文件、jar包或者归档。
delete File[S]/Jar[S]/Archive[S] <filepath>* :
从DistributeCache中删除文件。
在Hive cli里面执行脚本文件
source 'hql脚本';
相当于在命令行中输入:hive -f 'hql脚本';
在HIve Cli里面执行linux命令
!<command>
ex:
hive>!pwd;
在HIVE Cli里面执行hdsf命令
dfs <dfs command>
ex:
hive>dfs -ls /tmp;
# 在hive shell中操作hdfs更快,因为hdfs dfs的用法每次操作都需要重新启动一个jvm实例,而Hive在同一个进程执行这些操作。
- 保存hive数据
# 保存某一条语句的结果:
//分隔符和hive数据文件的分隔符相同
hive -S -e '语句' > test.txt
# 保存整表数据
hadoop fs -get <hdfsPath> <localPath>
- Hive集群之间到数据交互
# 使用Export命令会导出Hive表的数据表数据以及数据表对应的元数据
--导出命令
EXPORT TABLE test TO '/tmp/test_export'
--dfs命令查看
hdfs dfs -ls /tmp/test_export
--结果显示
/hive/test_export/_metadata
/hive/test_export/data
# 使用Import命令将导出的数据重新导入到hive中(必须将现导入的表重命名)
--导入到内部表的命令
IMPORT TABLE data_managed FROM '/tmp/test_export'
--导入到外部表的命令
Import External Table data_external From '/tmp/test_export' Location '/tmp/external/data'
--验证是否是外部表
desc formatted data_external
- HIve JDBC链接Java API
1.开启 hiveserver 服务:
$ hive –service hiveserver2 50000(50000)
2.建立与 Hive 的连接:
Class.forName(“org.apache.hadoop.hive.jdbc.HiveDriver”);
// 默认只能连接到 default 数据库,通过上面的两行代码建立连接后,其他的操作与传统数据库无太大差别。
Connection con= DriverManager.getConnection(“jdbc:hive://ip:50000/default,”hive”,”hadoop”)
- 其他一些操作
# 注释操作
-- 什么都可以。。
# 查看最近100条历史纪录
vi $HIVE_HOME/.hivehistory