前提条件
开启hadoop集群
start-dfs.sh
不开集群,以下的话 等于 废话。
第一种:
直接开启hive功能
cd /root/app/hive
bin/hive
第二种(jdbc):
1.在node01中开启hiveserver2端(老版本中有hiveserver1,新版本将其覆盖)
cd /root/app/hive/bin
./hiveserver2 没有任何提示信息,光标一直在哪一行不动
因为光标在哪里闪是在等待可以输入你在hive操作中错误信息,当然,如果你不想要
看到它们,也可以选择将其在后台运行。
nohup hiveserver2 1>/dev/null 2>&1 &
nohup,用户即使退出,程序也会在后台运行
/dev/null,黑洞,表示不存储信息;
2,错误输出
1,标准输出
& 后台输出
2.新开一个node01进入beeline
cd /root/app/hive
bin/beeline
出现"beeline>"即为成功
3.访问命令
!connect jdbc:hive2://node01:10000
node01是用户名,也可以用IP
10000是默认端口号
4.然后
一般是无用户名和密码的,即两步都不输入,直接回车
不行的话则是有密码:按以下方法:
第一个输入用户名:
Enter username for jdbc:hive2://node01:10000:
在"node01:50070"中进入到"/user/hive/"查看"warehouse"的Owner即为用户名
第二个输入密码:
Enter password for jdbc:hive2://node01:10000: 没有密码
5.出现"0: jdbc:hive2://node01:10000> "即为成功
这种方法相较于第一种还有有很多优势的:
- - - 查询时很舒服,有框框
- - - 类似前后台,前台有错误日志
- - -前台hiveserver2关闭后,后台也无法操作库啦
第三种(较第二种更为简化):
1.开启hiveserver2
nohup hiveserver2 1>/dev/null 2>&1 &
2.jdbc连接
bin/beeline -u jdbc:hive2://node01:10000 -n root
第四种(脚本执行):
1.单句一次性执行
hive -e "select * from table;"
2.可以将查询结果导入到文件中
hive -e "select * from tb" > tb.txt
3.文本批量执行
创建:
vi sql_single.q 后缀名不限制,可以用.q或.hql作为标识
hive -e "select * from db_order.t_order"
hive -e "select * from default.t_user"
hql="create table default.t_bash as select * from db_order.t_order"
执行:
hive -f sql_single.q (执行后就退出)
或者 hive -f sql_single.q (执行完后不退出,还可继续执行其他sql)(配合下面的cli使用)
或者 在cli中使用source ./sql_single.q
当我们有大量语句需要执行时,脚本化的优势是要远远大于交互式的。