Hive入门

来源:互联网 发布:php数据传到html页面 编辑:程序博客网 时间:2024/05/16 14:02

经常忘记hive的用处和方法,所以转载一篇方便下次查看,原博文地址:http://blog.csdn.net/wangmuming/article/details/25226951


 我们沿用之前Hadoop  wordcount的结果数据:

[hadoop@icity0 ~]hadoopfscat/wc/out/partr00000Warning:HADOOP_HOME is deprecated.


beautiful 1
day 1
dear 2
hello 2
hometown 1
honey 2
is 2
my 2
one 1
sunny 1
this 1
today 1
world 3


现在我们在Hive上新建一张wordcount的数据表,然后将hdfs 中的/wc/out/part-r-00000数据导入到hive中:

cd hive/bin

./hive

 CREATE TABLE wordcount(name string,id int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;

 LOAD DATA INPATH ‘hdfs://icity0:9000/wc/out/part-r-00000’ INTO TABLE wordcount;


查询wordcount数据表:



统计wordcount 数据表中的不同的单词个数,及count



从这个结果中,其实可以看出,我们之前所说的结论:

查询是通过MapReduce来完成的(并不是所有的查询都需要MapReduce来完成,比如select * from XXX就不需要;



Hive的安装(元数据库: MySQL)


hive介绍:

Apache Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能:
(1)它提供了一系列的工具,可用来对数据进行提取/转化/加载(ETL);
(2)是一种可以存储、查询和分析存储在HDFS(或者Hbase)中的大规模数据的机制;
(3)查询是通过MapReduce来完成的(并不是所有的查询都需要MapReduce来完成,比如select * from XXX就不需要;
(4)在Hive0.11对类似select a,b from XXX的查询通过配置也可以不通过MapReduce来完成

   在hadoop生态圈中属于数据仓库的角色。他能够管理hadoop中的数据,同时可以查询hadoop中的数据。
  本质上讲,hive是一个SQL解析引擎。Hive可以把SQL查询转换为MapReduce中的job来运行。
  hive有一套映射工具,可以把SQL转换为MapReduce中的job,可以把SQL中的表、字段转换为HDFS中的文件(夹)以及文件中的列。
  这套映射工具称之为metastore,一般存放在derby、mysql中。

 hive在hdfs中的默认位置是/user/hive/warehouse,是由配置文件hive-conf.xml中属性hive.metastore.warehouse.dir决定的。


  1) 在mysql里创建hive用户,并赋予其足够权限
[root@node01 mysql]# mysql -u root -p
Enter password:


mysql> create user ‘hivedb’ identified by ‘hivedb’;
Query OK, 0 rows affected (0.00 sec)


mysql> grant all privileges on *.* to ‘hivedb’ with grant option;
Query OK, 0 rows affected (0.00 sec)


mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)


2)测试hive用户是否能正常连接mysql,并创建hive数据库


[root@node01 mysql]# mysql -u hivedb-p
Enter password:

mysql> create database hivedb;
Query OK, 1 row affected (0.00 sec)


mysql> use hivedb;
Database changed
mysql> show tables;
Empty set (0.00 sec)


3)解压缩hive安装包

tar -xzvf hive-0.9.0.tar.gz

mv hive-0.9.0 hive
cd hive
 ls

4)下载mysql连接Java的驱动 并拷入hive home的lib下

 mv mysql-connector-java-5.1.24-bin.jar ./hive/lib


5)修改环境变量,把Hive加到PATH

vi .bash_profile
export HIVE_HOME=/home/hadoop/hive
export PATH=PATH:HIVE_HOME/bin

保存退出;
source  .bash_profile

6)修改hive-env.sh
cp hive-env.sh.template hive-env.sh

7)拷贝hive-default.xml 并命名为 hive-site.xml

修改四个关键配置 为上面mysql的配置
cp hive-default.xml.template hive-site.xml
vi hive-site.xml


<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>



<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>


<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hivedb</value>
  <description>username to use against metastore database</description>
</property>


<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hivedb</value>
  <description>password to use against metastore database</description>
</property>


8)修改hadoop的配置文件hadoop-env.sh

修改hadoop的配置文件hadoop-env.sh,修改内容如下:
export HADOOP_CLASSPATH=.:CLASSPATH:HADOOP_CLASSPATH:$HADOOP_HOME/bin


9)在目录$HIVE_HOME/bin下面,修改文件hive-config.sh

在目录$HIVE_HOME/bin下面,修改文件hive-config.sh,增加以下内容:
     export JAVA_HOME=/usr/java/jdk
     export HIVE_HOME=/home/hadoop/hive
     export HADOOP_HOME=/home/hadoop/hadoop


10)启动hadoop

      ./start-all.sh

11)启动hive

cd hive/bin

        ./hive

       






原创粉丝点击