5并行执行
6严格模式
7JVM重用
8推测执行
9执行计划
10虚拟列
使用mysql保存hive元数据
安装Mysql
配置hive元数据保存在mysql
Hiveserver2
beeline方式的连接
JDBC的方式进行连接
hive和mysql(传统数据库)的区别
Hive的常用交互命令
usage:hive
-d,--define<key=value>Variablesubsitutiontoapplytohive
commands.e.g.-dA=Bor--defineA=B
--database<databasename>Specifythedatabasetouse
-e<quoted-query-string>SQLfromcommandline
-f<filename>SQLfromfiles
-H,--helpPrinthelpinformation
--hiveconf<property=value>Usevalueforgivenproperty
--hivevar<key=value>Variablesubsitutiontoapplytohive
commands.e.g.--hivevarA=B
-i<filename>InitializationSQLfile
-S,--silentSilentmodeininteractiveshell
-v,--verboseVerbosemode(echoexecutedSQLtothe
console)
(1)-e不进入到hive的交互窗口执行sql语句
bin/hive-e"selectnamefromstudent";
bin/hive-e"selectnamefromstudent";
通过以上的方式,可以在不进入到hive中就可以执行sql语句进行查询
(2)-f执行的sql语句来自文件,其实可以理解为执行一个脚本命令
首先在/data/目录下创建hivesql.sql文件,在该文件下编写sql语句
Select*fromstudent;
之后可以在hive的命令行中使用-f参数执行该创建好的脚本文件,具体操作如下
bin/hive-f/data/hiveql.sql
在-f之后给定脚本的绝对路径,之后就可以执行咱们的脚本命令输出的结果如下
1zhangsan
2lisi
3banzhang
4xuewei
(3)在hive中也可以直接运行hdfs的命令,在进入hive的命令行模式下,可以直接
操作hdfs文件系统,并且由于hive会一直连接hdfs所以操作的时候会比平时不在
hive中操作更快速一些操作的命令如下
hive>dfs-mkdir/test;
Hive常见属性配置
(1)数据仓库的位置配置
defualt数据库默认的位置在hdfs上的/user/hive/warehouse的路径下,
打开hive中conf目录下发现存在hive-default.xml.template,该配置文件为hive中默认的属性
配置文件,在conf目录下需要配置自定义的配置文件hive-site.xml配置文件,可以参考默认的
配置文件进行创建
创建自定义配置文件的步骤:
1复制出来一份默认的配置文件
cphive-default.xml.templatehive-site.xml
2修改自定义的配置文件里面的内容,把该属性清空,只保留头信息,可以通过4000dd删除
里面的内容通过vi的方式
3通过参考默认配置文件查找需要配置的属性内容例如修改默认的数据库位置则配置信息如下
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>locationofdefaultdatabaseforthewarehouse</description>
</property>
修改之后,还需要为其指定的HDFS上的目录增加用户组的权限chmodg+w
/user/hive/warehouse
(2)配置查询信息的显示(头信息)
1在hive-site.xml配置文件中增加如下信息,可以配置数据显示的名称.
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>WhethertoincludethecurrentdatabaseintheHiveprompt.
</description>
</property>
改成true之后观察hive中显示的变化
通过观察发现在配置了该属性之后,数据的当前名称可以显示出来
hive(default)>usetest;
(3)配置列的头信息显示
在hive-site.xml配置文件中增加如下配置,可以显示头信息
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whethertoprintthenamesofthecolumnsinqueryoutput.
</description>
</property>
输出的内容显示如下
student.idstudent.name
1zhangsan
2lisi
3banzhang
4xuewei
(4)配置hive的日志信息
Hive运行日志,默认保存在/tmp/hadoop(用户名)/hive.log由于保存在/tmp目录下,该目录
是一个临时目录,所以日志需要经常查看,所以需要修改默认的路径
修改步骤:
首先在hive的目录下创建一个目录命名为logmkdirlog
/opt/app/apache-hive-1.2.1-bin/log
接下来要把默认的日志路径修改为自己创建的路径
首先进入到hive的conf目录下,该目录下存在一个配置文件为hive-
log4j.properties.template,需要修改该文件,去掉template。应为加上templatehive不识别
所以需要去掉template后缀
1重命名mvhive-log4j.properties.templatehive-log4j.properties
打开该文件修改如下属性
hive.log.dir=${java.io.tmpdir}/${user.name}
修改为咱们自定义的目录路径
hive.log.dir=/opt/app/apache-hive-1.2.1-bin/log
该属性指定了hive的日志保存路径
配置完该属性之后,重新进入一下hive,在hive中进行一些命令操作,观察新配置的目录是否
存在hive.log日志
(5)参数的配置方式
1配置文件的方式