码迷,mamicode.com
首页 > 其他好文 > 详细

Hive 学习

时间:2018-02-01 00:19:47      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:created   存在   oca   store   lib   value   文件中   script   format   

在 hive-site.xml 中配置元数据存储。这里使用了 http://blog.csdn.net/reesun/article/details/8556078 中提到的一种方式。

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.2.231:3306/hive?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>root</value>
    <description>Username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://ubuntu1:9083</value>
    <description>Thrift URI for remote metastore</description>
  </property>  

启动 Hive 前,需要启动 Hadoop

进入 Hive 的 bin 目录, 启动 metastore 服务(上面配置的Mysql,需要把 mysql jdbc 的jar 包放到 hive 的 lib 目录下):

         hive --service metastore >metastore.log 2>& 1&     后台运行,日志写入到当前目录下的 metastore.log 中

服务启动后运行: ./hive  等一会后,会进入 hive 的命令终端。然后就可以运行 hql 了。

 

使用下面的步骤创建表:

1. 创建Database:      create database testhive;

2. 使用刚创建的 db:     use testhive;

3. 创建一张表:    create table emp(
            name string,
            age int,
            salary int,
            deptCd string
        ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘ lines terminated by ‘\n‘;

    上面 TERMINATED BY ‘,‘ 表示各个字段之间使用逗号分隔。

     Hive 的元数据信息存在数据库中(本例中是 mysql 数据库),真正的数据是存在 HDFS 上的。上面的 emp 表在HDFS 上就是一个文件,上面创建的表中的一条记录其实就是文件中的一行,各字段的值用 TERMINATED BY 指定的字符分开。

4. 往表中加载一些数据:  load data local inpath ‘/home/shj/emp.txt‘ into table emp;

 

进行一些表的操作的时候,遇到了问题。 select * from emp; 能正确运行,显示出了表中的记录。但是运行  select count(1) from emp; 时,程序一直卡在那不动。后来查了一下,才发现还需要启动 Hadoop 的 YARN。 Hive 把 hql 转化成了 Hadoop 的 Map-Reduce 的任务,需要运行在 YARN 上。

 

Hive 学习

标签:created   存在   oca   store   lib   value   文件中   script   format   

原文地址:https://www.cnblogs.com/langfanyun/p/8395170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!