Hive简介、安装及数据导入基本方法
2016-06-16 21:46
477 查看
参考
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.shtmlhadoop的版本是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环境搭建
相关文章推荐
- 第一个博文
- SpringMVC框架中,静态资源(如外部js)无法访问的问题
- HDU2026
- 专业DBA 遇到的问题集
- PPT文字转成Word文档的4大绝招
- 集合复杂问题编程
- VIM基础操作命令整理
- MySQL知识点整理
- (二分法)求X的N次方
- 深入了解javascript的sort方法
- [转]webpack 使用优化指南
- CSS3的笔记总结
- C语言中有关外部函数调用的问题
- 2016年06月16日学习日记 c++第二讲
- 装饰者模式
- S3C2440开发板+RT3070无线网卡 基于hostapd+udhcpd+iptables实现softAP模式(路由器)
- Struts2学习第三天——拦截器与文件传输
- 二叉树按层遍历问题
- hdu 5475 An easy problem(线段树单点更新)
- 《鬼谷子的局4》 —— 读后总结