Hive安装与使用

1 篇文章 0 订阅

环境:Ubuntu 14.04

一、安装mysql创建hive数据库

sudo apt-get install mysql-server mysql-client

mysql -u root -p
#创建hive用户
insert into mysql.user(Host,User,Password) values("localhost","hive",password("hive"));
#创建hive数据库
create database hive;
#分配权限
grant all on hive.* to hive@'%'  identified by 'hive';
grant all on hive.* to hive@'localhost'  identified by 'hive';
flush privileges; 

二、安装hive

1. 下载并解压hive

sudo wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.0/apache-hive-2.1.0-bin.tar.gz
sudo tar -zxvf apache-hive-2.1.0-bin.tar.gz
sudo mv apache-hive-2.1.0 hive

2 . 配置环境变量

sudo vim /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
3 . 修改配置文件

hive中的配置文件在conf目录下

cp hive/conf/hive-default.xml.template hive/conf/hive-site.xml  
sudo vim hive/conf/hive-site.xml  
#添加以下配置  
<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>  
</property>  
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>com.mysql.jdbc.Driver</value>  
</property>  
<property>  
  <name>javax.jdo.option.ConnectionUserName</name>  
  <value>hive</value>  
</property>  
<property>  
  <name>javax.jdo.option.ConnectionPassword</name>  
  <value>hive</value>  
</property>
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive/warehouse</value>  
</property>

拷贝mysql-connector-java-5.1.6-bin.jar 到hive 的lib目录中。

注:把jline-2.12.jar拷贝到hadoop的share/hadoop/yarn/lib/目录下,替代jline-0.9.94.jar,否则启动可能会报错。

4 . 在HDFS上创建hive所需目录

hadoop fs -mkdir /tmp
hadoop fs -mkdir /user/hive/warehouse
#修改上述路径的访问权限,使用户组具有写入权限
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
5 . 启动hive

#启动hive
hive
#退出hive的交互式shell
hive>quit;
报错解决:
Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

执行:schematool -dbType mysql -initSchema


三、数据导入

1 . 下载UFO数据

sudo wget http://7xjg29.com1.z0.glb.clouddn.com/ufo.tsv

2 . 上传数据到HDFS

hadoop fs -put ufo.tsv /tmp/ufo.tsv

3 . 创建数据表

#创建表
CREATE TABLE ufodata(sighted STRING,
reported STRING,sighting_location STRING,
shape STRING,duration STRING,description STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
#查看所有的表
show tables;
#使用正则匹配表名
show tables '.*data'
#查看表中各字段
describe ufodata;
#查看详细表描述
describe extended ufodata;

这里需要解释ROW FORMAT与FIELDS TERMINATED BY,前者告诉hive每行数据包含多个有界字段,后者则指定了分隔符为‘\t’。

4 . 将数据导入到表中
#将hdfs上的文件插入ufodata表中
LOAD DATA INPATH '/tmp/ufo.tsv' OVERWRITE INTO TABLE ufodata;
#统计记录数
select count(*) from ufodata;
#或在终端直接执行如下语句查询
hive -e "select count(*) from ufodata;"
#查看sighted字段前5列
更多查询可参考附录的记录组成。

四、Hive常用命令

#执行sql语句
hive -e "select count(*) from tablename;"

#执行hql脚本
hive -f command.hql

#建表语句
create table ufodata(sighted string,reported string,sighting_location string,
shape string,duration string,description string)
row format delimited
fields terminated by '\t';

#从hdfs导入文件
load data inpath '/tmp/ufo.tsv' overwrite into table ufodata;

#基于现有文件创建表
create external table states(abbreviation string,full_name string)
row format delimited
fields terminated by '\t';
location '/tmp/states';

#创建表并从其他表导入数据
create table tablename as select * from tablename2 ;

#仅复制表结构不导入数据
create table tablename3 like tablename;

#增加一个字段
alter table tablename add columns(new_col String);

#修改表名
alter table oldname rename to newname;

#从其他表导入数据
insert overwrite table tablename2 select * from tablename1 ;

#查看所有函数
show functions;

#查看函数用法
describe function substr;

附录:

UFO目击事件记录组成

Sighting date :目击发生时间

Recorded date :报告目击事件的日期

Location :目击事件发生的地点

Shape:UFO的形状

Duration:目击事件的持续时间

Description:目击事件的大致描述 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值