Hive简介、安装及数据导入基本方法

参考

Hive安装
王家林DT大数据梦工厂

场景

Hive存在的意义,怎么安装?如何把本地数据导入到Hive中来?

分析

简介

1、Hive是分布式数据仓库,同时又是查询引擎,所以Spark SQL取代的只是Hive的查询引擎,在企业实际生产环境下Hive+SparkSQL是经典组合。
2、Hive本身是一个简单单机版本的软件,主要负责:
a) 把HQL翻译成Mapper(s)-Reducer-Mapper(s)代码;并且可能产生很多MapReduce的Job;
b) 把生成的MapReduce代码及相关资源打包成为jar并发布到Hadoop集群中且进行运行(自动进行)。

安装

转自:http://www.mincoder.com/article/5809.shtml
hadoop的版本是2.6.0
根据hive的源数据不同分为三种模式

1、内嵌模式,使用自带的derby

2、本地独立模式,本地mysql库

3、远程模式,远程mysql库

这里主要讲第三种模式
假设hadoop2.6.0已经正常启动
首先下载hive-1.2.0版本,下载地址hive官方下载
然后登陆root修改环境变量,下面是我得:

export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export HIVE_HOME=/home/hadoop/apache-hive-1.2.0-bin
export PATH=$PATH:$HIVE_HOME/bin
export CLASS_PATH=$CALSSPATH:$HIVE_HOME/lib

接着将下载的文件上传到服务器并解压到主目录:

tar xvzf apache-hive-1.2.0-bin.tar.gz

为了一次性成功,在hive主目录下找到conf文件夹下的hive_env.sh,将配置其中得HADOOP_HOME和HIVE_CONF_DIR

export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export HIVE_CONF_DIR=/home/hadoop/apache-hive-1.2.0-bin/conf

配置完后将hive-default.xml.template复制并改名为hive-site.xml,清除里面得全部内容(因为hive会先加载default那个文件,再去加载site文件,如果两个文件里有相同得配置,那么以site为准,所以不必拷贝那么多,容易混淆)
将如下配置复制进去

<configuration>
    <property> 
        <name>javax.jdo.option.ConnectionURL</name> 
        <value>jdbc:mysql://192.168.1.102:3306/hive</value> 
    </property> 
    <property> 
        <name>javax.jdo.option.ConnectionDriverName</name> 
        <value>com.mysql.jdbc.Driver</value> 
        <description>驱动名</description> 
    </property> 
    <property> 
        <name>javax.jdo.option.ConnectionUserName</name> 
        <value>root</value> 
        <description>用户名</description> 
    </property> 
    <property> 
        <name>javax.jdo.option.ConnectionPassword</name> 
        <value>123456</value> 
        <description>密码</description> 
    </property> 
    <property> 
        <name>hive.metastore.warehouse.dir</name> 
        <value>/home/hadoop/hive/warehouse</value> 
        <description>数据路径(相对hdfs)</description> 
    </property>
    <property> 
        <name>hive.metastore.uris</name> 
        <value>thrift://192.168.1.55:9083</value> 
        <description>运行hive得主机地址及端口</description> 
      </property> 
</configuration>

至此,hive得配置完成,在远程主机上安装mysql,远程主机可以是任意操作系统,我这里用的是win7-x64,安装完成后新建数据库名为hive,字符集采用latin1,回到centos7,找到hive主目录下得lib,放入mysql得连接jar,mysql-connector-java-5.1.27-bin.jar,然后找到一个叫jline-2.1.2.jar得文件,复制他,去hadoop主目录将hadoop下得三个同名但不同版本得jline替换成刚刚复制得。
剩下最后一步,检查防火墙,不需要得话就关了防火墙,需要得话就把端口放开,比如9083,9000,9001,50070等,然后测试,切换到hive主目录,输入一下命令:

[hadoop@h1 apache-hive-1.2.0-bin]$ bin/hive --service metastore
Starting Hive Metastore Server

在hive目录新打开一个命令界面,输入以下命令:

[hadoop@h1 apache-hive-1.2.0-bin]$ bin/hive
Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.0-bin/lib/hive-common-1.2.0.jar!/hive-log4j.properties
hive>

注意启动元数据服务得那个命令行界面不能关也不能按Ctrl+C,否则相当于关闭服务。另起得那个命令行界面(客户端)进入后输入命令以下命令退出。

quit

下面我们用命令来新建表、添加数据、删除表来测试是否成功:

hive> show tables;
OK
Time taken: 3.069 seconds
hive> create table hive_test(name string);
OK
Time taken: 2.405 seconds
hive> LOAD DATA LOCAL INPATH '/home/hadoop/input/test3.txt' overwrite INTO TABLE hive_test; 
Loading data to table default.hive_test
Table default.hive_test stats: [numFiles=1, numRows=0, totalSize=11, rawDataSize=0]
OK
Time taken: 2.63 seconds
hive> select * from hive_test;
OK
hello
word
Time taken: 0.5 seconds, Fetched: 2 row(s)
hive> drop table hive_test;
OK
Time taken: 2.948 seconds
hive> show tables;
OK
Time taken: 0.065 seconds
数据导入基本方法实战

把本地文件系统中具有一定格式的数据记录(往往是经过处理-ETL后的数据),比如:

ivy    27    basketball   single
vivo   18    basketball   single

字段间 以 ‘\t’ 分隔,记录间以 ‘\n’分割,导入到hive数据仓库中来,以方便 Spark SQL等查询框架做数据分析:

create table hive.SogouQ1(ID STRING,WEBSESSION STRING,WORD STRING,S_SEQ INT,C_SEQ INT,WEBSITE STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; //建表

create external table hive.SogouQ2(ID STRING,WEBSESSION STRING,WORD STRING,S_SEQ INT,C_SEQ INT,WEBSITE STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/hive/warehouse-ext';

LOAD DATA INPATH '/user/hive/warehouse/SogouQ1.txt' INTO TABLE SogouQ1;//导入数据
Loading data to table hive.sogouq1

select word,count(word) as NUM from sogouQ1 group by word order by NUM desc limit 3 //简单的分析

CREATE TABLE  IF NOT EXISTS scores(name STRING,score INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\n'

总结

  • Hive是分布式数据仓库,同时又是查询引擎!
  • 建表:create table hive.SogouQ1(ID STRING,WEBSESSION STRING,WORD STRING,S_SEQ INT,C_SEQ INT,WEBSITE STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
  • 数据导入:LOAD DATA INPATH '/user/hive/warehouse/SogouQ1.txt' INTO TABLE SogouQ1
  • 元数据服务启动命令:bin/hive --service metastore

注释:hbase环境搭建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值