Hive-0.14.0与mysql配置

1.下载后解压修改文件夹的用户及用户组权限

2.配置参数

/etc/profile(环境变量)

                 export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin

hive-env.sh

                 export HADOOP_HOME=/usr/local/hadoop

bin/hive-config.sh

                 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 表示主机名

    mysql -u root -h CentOS -p  --     -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>

         <value>jdbc:mysql://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 [email protected]: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 ;                        --删除表

发布了14 篇原创文章 · 获赞 3 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章