1.hive:
在hadoop生态圈中属于数据仓库的角色,它能够管理hadoop中的数据,同时可以查询hadoop中的数据。
本质上讲,hive是一个sql解析引擎,hive可以把sql查询转换为mapreduce中的job来运行。
hive有一套映射工具,可以把sql转化为mapreduce中的job,可以把sql中的表、字段转化为hdfs
中的文件(夹)以及文件中的列。
这套映射工具称之为metastore,一般存放在derby、mysql中。
hive安装:
1.tar -zxvf hive-0.9.0.tar.gz
2.mv hive-0.9.0 hive
3.vi /etc/profile设置hive环境变量
export HIVE_HOME=/usr/local/hive
:$HIVE_HOME/bin:
source /etc/profile
4.cd hive/
cd conf
mv hive-default.xml.templata hive-site.xml
mv hive-env.sh.template hive-env.sh
5.修改hadoop-env.sh
vi ../../hadoop/conf/hadoop-env.sh
修改hadoop的hadoop-env.sh(否则启动hive汇报找不到类的错误)
export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:
$HADOOP_HOME/bin
6.vi hive-config.sh
export JAVA_HOME=/usr/local/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
使用hive
进入hive的bin目录
hive
show databases;
use default;
show tables;
create table t1(id string);
show tables;
select * from tl;
----
hive在hdfs中的默认位置是
/user/hive/warehouse
--------在配置文件中修改
hive-conf.xml可以修改 hive.metastore.warehouse.dir决定的
3.安装mysql
(1)删除linux上已经安装的mysql相关库信息。rpm -e xxxxxxx --nodeps
执行命令rpm -qa |grep mysql 检查是否删除干净
(2)执行命令 rpm -i mysql-server-******** 安装mysql服务端
(3)启动mysql 服务端,执行命令 mysqld_safe &
(4)执行命令 rpm -i mysql-client-******** 安装mysql客户端
(5)执行命令mysql_secure_installation设置root用户密码
4.(1)把mysql的jdbc驱动放置到hive的lib目录下
cp mysql-jdbc.jar /usr/local/hive/lib/
(2)修改hive-site.xml文件,修改内容如下:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop0: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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
</property>
设置mysql允许远程连接:
grant all on hive.* to 'root'@'%' identified by 'admin';
fuush privileges;
5.内部表:
create table t1(id int);
增加数据:
load data local inpath '/root/id' into table t1;
创建表:
create table t2(id int, name string) row format delimited fields terminated by '\t';
hadoop fs -put stu /hive/t2
6.分区表
create table t3(id int) partitioned by (day int);
加载分区表的数据:
load data local inpath 'root/id' into table t3 partition (day='22');
select * from t3 where day='22'查询分区数据
7.桶表:
create table t4(id int) clustered by(id) into 4 buckets;
set hive.enforce.bucketing = true;
insert into table t4 select id from t3;
8. 外部表
create external table t5(id int) location '/external';
9.视图
CREATE VIEW v1 AS select * from t1;
service hiveserver >/dev/null 2>/dev/null &
10.udf
describe function pi
删除外部表的时候只会删除外部表信息,不会删除数据
在hadoop生态圈中属于数据仓库的角色,它能够管理hadoop中的数据,同时可以查询hadoop中的数据。
本质上讲,hive是一个sql解析引擎,hive可以把sql查询转换为mapreduce中的job来运行。
hive有一套映射工具,可以把sql转化为mapreduce中的job,可以把sql中的表、字段转化为hdfs
中的文件(夹)以及文件中的列。
这套映射工具称之为metastore,一般存放在derby、mysql中。
hive安装:
1.tar -zxvf hive-0.9.0.tar.gz
2.mv hive-0.9.0 hive
3.vi /etc/profile设置hive环境变量
export HIVE_HOME=/usr/local/hive
:$HIVE_HOME/bin:
source /etc/profile
4.cd hive/
cd conf
mv hive-default.xml.templata hive-site.xml
mv hive-env.sh.template hive-env.sh
5.修改hadoop-env.sh
vi ../../hadoop/conf/hadoop-env.sh
修改hadoop的hadoop-env.sh(否则启动hive汇报找不到类的错误)
export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:
$HADOOP_HOME/bin
6.vi hive-config.sh
export JAVA_HOME=/usr/local/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
使用hive
进入hive的bin目录
hive
show databases;
use default;
show tables;
create table t1(id string);
show tables;
select * from tl;
----
hive在hdfs中的默认位置是
/user/hive/warehouse
--------在配置文件中修改
hive-conf.xml可以修改 hive.metastore.warehouse.dir决定的
3.安装mysql
(1)删除linux上已经安装的mysql相关库信息。rpm -e xxxxxxx --nodeps
执行命令rpm -qa |grep mysql 检查是否删除干净
(2)执行命令 rpm -i mysql-server-******** 安装mysql服务端
(3)启动mysql 服务端,执行命令 mysqld_safe &
(4)执行命令 rpm -i mysql-client-******** 安装mysql客户端
(5)执行命令mysql_secure_installation设置root用户密码
4.(1)把mysql的jdbc驱动放置到hive的lib目录下
cp mysql-jdbc.jar /usr/local/hive/lib/
(2)修改hive-site.xml文件,修改内容如下:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop0: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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
</property>
设置mysql允许远程连接:
grant all on hive.* to 'root'@'%' identified by 'admin';
fuush privileges;
5.内部表:
create table t1(id int);
增加数据:
load data local inpath '/root/id' into table t1;
创建表:
create table t2(id int, name string) row format delimited fields terminated by '\t';
hadoop fs -put stu /hive/t2
6.分区表
create table t3(id int) partitioned by (day int);
加载分区表的数据:
load data local inpath 'root/id' into table t3 partition (day='22');
select * from t3 where day='22'查询分区数据
7.桶表:
create table t4(id int) clustered by(id) into 4 buckets;
set hive.enforce.bucketing = true;
insert into table t4 select id from t3;
8. 外部表
create external table t5(id int) location '/external';
9.视图
CREATE VIEW v1 AS select * from t1;
service hiveserver >/dev/null 2>/dev/null &
10.udf
describe function pi
删除外部表的时候只会删除外部表信息,不会删除数据