1.下载后解压修改文件夹的用户及用户组权限
2.配置参数
/etc/profile(环境变量)
export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin
export HADOOP_HOME=/usr/local/hadoop
bin/
export JAVA_HOME=/usr/lib/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
hive-site.xml(由hive-default.xml.template复制生成)
<property> --这四个参数一定要配置,否则报错
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive/temp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/temp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/temp</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/usr/local/hive/operation_logs</value>
</property>
<property> --该参数是设置HDFS中保存数据仓库的目录
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
hive-log4j.properties
hive.log.dir=/usr/local/hive/logs
hive.log.file=hive.log
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter --重要
3.配置完工,执行 hive 即可进入 hive shell,注意Hive是建立在Hadoop之上的,需启动HDFS,在执行hive
5.连接mysql
先看看mysql服务有没有启动,/etc/rc.d/init.d/mysql status
我的系统安装时就选择了mysql软件,不过默认是没有启动的,如果没有安装,可以yum install mysql-server安装
注意切换到root权限下才能执行 service mysqld start ,启动mysql
6.mysqladmin -u root password newpassword --mysql安装后root用户默认没有密码,需设定一个密码
mysql -u root -p --root 用户登录mysql,接下来提示输入密码,输入刚才设定的密码即可,root成功登录
注意:如果你的主机地址不是localhost,而是配置了Hosts文件,有了自己的主机名,辣么问题来了,请用下面的命令操作
mysqladmin -u root -h CentOS password 'new-password' -- -u 表示用户名 -h 表示主机名
-- -p表示密码
7.接下来创建其他用户
create user 'user1'@'localhost' identified by 'password';
grant select , insert , update , delete on *.* to 'user1'@'localhost'
grant all on *.* to 'user1'@'localhost' --这个是赋给用户 user1 所有的权限,简单暴力
用上面第一句话和第三句就可以了
注意:权限设置好后,记得执行
flush privileges; --刷新系统权限表
8.配置hive连接mysql
hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
localhost:3306/hive?createDatabaseIfNotExist=true</value>
--这里因为我创建mysql帐号时用的是localhost,所以这里是这个,如果你用的主机名,这里填写主机名,3306是mysql默认的监听端口,其他照抄
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>conan1</value> --这是我自己在创建的mysql用户
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
</property>
9.去网上下载一个mysql-connector-java-5.1.34-bin.jar,把它放入 ${HIVE_HOME}/lib 的目录下,否则会报错,这个是连接驱动
10.执行环境
命令行环境 :直接输入 hive 即可进入命令行
hive 验证启动的方法:hive --service hwi
这时会报错,马丹真坑
FATAL hwi.HWIServer:HWI WAR file not found at /usr/local/hive/${env:HWI_WAR_FILE},小错误,
hive目前的发行包里没有hwi的war包文件,这个问题在0.13和0.14上都存在,没有这个war包就不能启动hwi服务。
目前的解决方法是从源码手动build出这个war包,具体做法是:
下载hive 0.14.0的源码包并解压
解压后进入hwi子目录,该目录下的web文件夹正是war包的全部文件,我们需要做的就是通过jar命令把这个文件夹打包为war文件。
在hwi目录下执行: jar cvfM0 hive-hwi-0.14.0.war -C web/ .
执行之后 ,将生成的war文件拷贝至$HIVE_HOME/lib文件夹下,同时修改hive-site.xml文件夹中的:
hive.hwi.war.file,将其value改为lib/hive-hwi-0.14.0.war
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.14.0.war</value>
</property>
再执行 hive --service hwi
妥妥滴完工,这时还会报错,我母鸡怎么解决,不过还是可以运行了
显示 Started SocketConnector@0.0.0.0:9999
打开浏览器输入 localhost:9999/hwi 成功打开页面
如果出现以下错误:
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jdk/jre"
解决方法:
cp $JAVA_HOME/lib/tools.jar $HIVE_HOME/lib/
11.Hive的数据类型
基本数据类型
tinyint/smallint/int/bigint
float/double
boolean
string
复杂数据类型
Array/Map/Struct
没有date/datetime
12.Hive常规操作
hive > create database test ; --创建一个 test 数据库
hive > use test ; --使用 test 数据库
hive > create table score(name string , score int); --创建名叫 score 的表,两个字段,name字段是string类型,score是int累i系那个
hive > create table person(name string,age int)row format delimited fields terminated by '\t' escaped by '\\' stored as textfile;
--后面的这段话是指定字段的分隔符,这里设置的是 '\t' 遇到一个这个符号 即表示一个字符串结束
--COLLECTION ITEMS TERMINATED BY ',' 这句话表示这个字段是一个数组,用 ',' 分割元素对象
hive > load data local inpath ' fileshare/score1.txt ' into table score; --加载score1.txt文件中的数据到表 score 中
hive > select * from score; --查询显示表中的数据
hive > select count(*) from score; --这个计算过程,Hive会自动转换成MapReduce任务执行,
hive > drop table score ; --删除表