Hive之——基础配置

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/88379104

Hive连接数据库的配置



	javax.jdo.option.ConnectionURL
	jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&useSSL=false
	JDBC connect string for a JDBC metastore


	javax.jdo.option.ConnectionUserName
	root
	username to use against metastore database


	javax.jdo.option.ConnectionPassword
	root
	password to use against metastore database


	javax.jdo.option.ConnectionDriverName
	com.mysql.jdbc.Driver
	Driver class name for a JDBC metastore

在CLI提示符前打印出当前所在的数据库名

hive --hiveconf hive.cli.print.current.db=true;

或者进行hive命令行后:

set hiveconf:hive.cli.print.current.db=true;

在CLI提示符前不显示当前所在的数据库名

set hiveconf:hive.cli.print.current.db=false;

增加新的hiveconf属性

hive --hiveconf y=5
hive> set y;
y=5

set命令定义变量:

hive --define foo=bar
hive> set foo;
foo=bar
hive> set hivevar:foo=bar2;
hive> set foo;
foo=bar2
hive>

前缀hivevar:是可选的。--hivevar标记和--define标记是相同的。
利用上面创建的变量建表:

hive> create table toss1(i int, ${hivevar:foo} string);
OK
Time taken: 5.163 seconds
hive> desc toss1;
OK
i                       int                                         
bar2                    string                                      
Time taken: 0.42 seconds, Fetched: 2 row(s)
hive> create table toss2(i int, ${foo} string);
OK
Time taken: 0.099 seconds
hive> desc toss2;
OK
i                       int                                         
bar2                    string                                      
Time taken: 0.067 seconds, Fetched: 2 row(s)

Java系统属性对system命名空间内容具有可读可写权利; evn命名空间,对于环境变量只提供可读权限:

hive> set system:user.name;
system:user.name=root
hive> set system:user.name=yourusername;
hive> set system:user.name;
system:user.name=yourusername

hive> set env:HOME;
env:HOME=/root

“一次使用”命令

hive -e "select * from mytable"

开启静默模式,在输出结果中去掉"OK"和"Time taken"等行

hive -S -e "select * from mytable"

当用户不能完整记清楚某个属性名时,可以模糊获取这个属性名而无需滚动set命令的输出结果进行查找,这里,假设用户没记清哪个属性指定了管理表的"warehouse(数据仓库)"的路径,通过如下命令可以查看到:

[root@binghe ~]# hive -S -e "set" | grep warehouse
hive.metastore.warehouse.dir=/user/hive/warehouse
hive.warehouse.subdir.inherit.perms=true

Hive中可以使用-f文件名方式执行指定文件中的一个或者多个查询语句。一般把这些Hive查询文件保存为具有.q或者hql后缀的文件。

hive -f /path/to/file/withqueries.hql

在Hive Shell中用户可以使用source命令执行一个脚本文件。

hive
hive> source /path/to/file/withqueries.hql

hiverc文件
-i 文件名,这个选项允许用户指定一个文件,当CLI启动时,在提示符出现前会先执行这个文件,Hive会自动在HOME目录下寻找名为.hiverc的文件,而且会自动执行这个文件中的命令。
对于用户需要频繁执行的命令,使用这个文件非常方便。

比如,$HOME/.hiverc文件:

ADD jar /path/to/custom_hive_extensions.jar;
set hive.cli.print.current.db=true;
set hive.exec.mode.local.auto=true;

执行Shell命令
用户不需要退出hive CLI就可以执行简单的bash shell命令,只要在命令前加上!并且以分号(;)结尾就可以:

hive> ! echo 'binghe';
'binghe'
hive> !pwd;
/root
hive> 

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

在Hive中使用Hadoop的dfs命令
在Hive中使用Hadoop的dfs命令,只需要将Hadoop命令中的关键字去掉,以分号结尾。

hive> dfs -ls /;
Found 3 items
drwxr-xr-x   - root supergroup          0 2019-03-03 19:10 /root
drwx------   - root supergroup          0 2019-03-04 14:15 /tmp
drwxr-xr-x   - root supergroup          0 2019-03-04 12:36 /user

Hive中的注释
以--开头的字符串表示注释
注意:有注释的HQL语句,只能放在脚本中通过 hive -f script_name 的方式执行。
显示字段名称
设置 hiveconf 配置项 hive.cli.print.header为true来开启这个功能:

hive> set hiveconf:hive.cli.print.header=true;
hive> select * from dbs;
OK
dbs.db_id       dbs.desc        dbs.db_location_uri     dbs.name        dbs.owner_name  dbs.owner_type
1       Default Hive database   hdfs://liuyazhuang11:9000/user/hive/warehouse   default public  ROLE

如果想总是看到字段名称,那么只需要将第1行set hiveconf:hive.cli.print.header=true;添加到$HOME/.hiverc文件中即可。

 

你可能感兴趣的:(Hive,Hadoop,Hive,Hadoop生态)