@awsekfozc
2016-01-08T19:13:07.000000Z
字数 3758
阅读 2107
Hive
1)hive是基于Hadoop的一个数据仓库,将结构化的数据文件映射为一张数据库表。(HDFS存储数据)
2)提供HiveQ语句查询,结构类似于SQL。将语句解析成mapreduce任务(可能多个)(YARN运行mapreduce)
3)元数据存储在RDBMS(mysql,Postgresql)。
使用简单的HiveQL自动生成mapreduce,省去了繁琐的编程过程。在筛选数据的效率上大大提升。十分适合数据仓库的统计分析。
Hive的数据存储在HDFS之上。适合大数据量的存储,运行再YARN上,分布式的YARN,让Hive适合筛选大数据量的数据。
//解压
$ tar -zxvf apache-hive-0.13.1-bin.tar.gz -C /opt/moduels/
//hive-env.sh
//hadoop环境设置
HADOOP_HOME=/opt/moduels/hadoop-2.5.0/
//Hive的控制目录
export HIVE_CONF_DIR=/opt/moduels/hive-0.13.1/conf
//HDFS上创建临时目录并赋予可学权限
$ bin/hdfs dfs -mkdir /tmp
$ bin/hdfs dfs -chmod 775 /tmp
//HDFS上创建数据存储目录并赋予可学权限
$ bin/hdfs dfs -mkdir -p /user/hive/warehouse
$ bin/hdfs dfs -chmod 775 /user/hive/warehouse
###
启动前记得加上mysql驱动包
###
//启动hive
$ bin/hive
//创建表pepole
create table pepole(pid int,name string,phone string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
//创建表加载数据
load data local inpath "/opt/datas/customers.csv" into table pepole;
//联网安装,使用yum
设置自动获取IP地址
//替换系统镜像源
$ cd /etc/yum.repos.d
$ sudo mv CentOS-Base.repo CentOS-Base.repo.bak
$ sudo touch CentOS6-Base-163.repo
$ sudo vi CentOS6-Base-163.repo
//查看要安装的组件
$ sudo yum list|grep mysql
//安装mysql
$ sudo yum install mysql-server -y
//查看mysql服务状态
$ sudo service mysqld status
//启动mysql服务
$ sudo service mysqld start
//设置mysql root用户密码
# /usr/bin/mysqladmin -u root password '123456'
//测试连接数据库
$ mysql -uroot -p123456
> show databases ;
> use test ;
> show tables ;
- 自定义文件:/opt/moduels/hive-0.13.1/conf/hive-site.xml
- 配置属性查找:/opt/moduels/hive-0.13.1/conf/hive-site.xml.template
<!--hive-site.xml-->
<!--连接路径-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop.zc.com/metastore?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>
#查看数据库
show databases;
#使用数据库
use datbase_name;
#查看表
show tables;
#创建数据库
create database datbase_name ;
#创建表
create table pepole(pid int,name string,phone string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
#加载HDFS数据到表
load data inpath '/user/hive/warehouse/pepole/customers.csv' into table pepole ;
#加载本地数据表
load data local inpath "/opt/datas/customers.csv" into table pepole;
#查询表
select * from table-name ;
#查看表属性
desc table-name;
#查看表详细属性
desc extended table-name ;
#查看格式化表属性
desc formatted table-name ;
#查看函数
show functions ;
#查看函数使用
desc function fun-name ;
#查看函数详细属性
desc function extended upper ;
<!--仓库路径配置:使用时注意权限,要有写的权限-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<!--hive运行日志目录配置:$HIVE_HOME/conf/hive-log4j.properties-->
hive.log.dir=/opt/moduels/hive-0.13.1/logs
<!--指定hive运行时显示的log日志的级别(INFO,DEBUG):$HIVE_HOME/conf/hive-log4j.properties-->
$HIVE_HOME/conf/log4j.properties
<!--在cli命令行上显示当前数据库,以及查询表的行头信息:$HIVE_HOME/conf/hive-site.xml-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
在此输入正文