hive基本概念

1.hive是一个基于hadoop之上的一个数据仓库。可以处理的数据是关系型数据
库(结构性)、本地数据、hdfs数据(非结构化的数据);
2.hive是对处理数据的mapreduce的封装平台
3.hive会提供一些简单的类sql语句来代替mapreduce执行;
4.hive是为对数据库比较数据的非专业人员准备的
5.hive的操作语句:QL语句--》HSql--》类(like)sql
6.hive在处理业务的时候有一定的局限性,只能处理一些简单的。常用
的业务,如果碰到比较复杂的业务处理时,依然需要开发人员自己的
mapreduce应用。
7.使用hive操作的数据来源可以来自不同的软件系统:本地系统、hdfs系统、亚马逊s3;
8.hive上的操作的数据格式可以由用户进行设定,否则会出现存入的数据和读取的数据显示不一致,一般都会显示为null。

----------------------------------------------------
9.安装配置hive的前提条件:
安装jdk
安装hadoop
安装hive
10.hive的QL语句是基于sql92规范,能够支持大部分的语法和语义,但是并不完全支持,同时也增加增加一些hive自己的QL语法规则。
11.hive的存储数据的格式以表的形式:
外部表
内部表
桶表
分区表
12.安装与配置hive
说明:
1)安装hive时,首先确保hadoop已经安装完毕并且能正确使用
2)因为hive是基于hadoop平台,安装hive之后需要进行相关配置。相关文件:hive-evn.sh和hive-site.xml
3)建议配置hive的path环境:HIVE_HOME在/etc/profile,hive有自带的一个关系型数据库derby,如果使用自带的数据库,需要进行数据库的相关配置。如果开发者想更换数据库,例如更换mysql数据库,则需要进行配置文件的修改并且需要提供mysql数据库的驱动放到hive_home/lib下。目前hive主要是支持derby和mysql数据库
安装hive的步骤:
1)解压hive-0.12.0.tar.gz
simple/:tar -zxvf /usr/java/hive-0.12.0.tar.gz
2)配置hive-evn.sh
在hive的安装目录下的conf文件中修改hive-env.sh文件(如果该目录下不存在该文件,可复制如下:)
cp hive-evn.sh.template hive-evn.sh(hive-env.sh文件名是固定的,不得随意修改)
复制完毕之后 vim hive-site-evn.sh 增加hadoopd的安装目录 如:HADOOP_HOME=/simple/hadoop-2.4.1
3)修改环境变量:vim /etc/profile 添加hive的安装目录和path路径
HIVE_HOME=/simple/hive-0.12.0(新添加)
export PATH=$JAVA_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
4)source /etc/profile
5)测试hive的使用
切换到指定的目录(建议在hive的安装目录下hive-0.12.0或者hive-0.12.0/bin)
6)/>hive or ./hive
show databases;//查看所有的数据库
create database bigdata;//创建数据库
use  bigdata;//指定使用数据库
create table stu(id int,name string,age int) row format delimited fieds terminated by '';//创建stu表并指定表的格式
show tables;//查看数据库中所有的表
load data local inpath '/simple/student.txt' into table stu;//从本地导入到hive的指定数据表中(导入数据)
注意:在hive中创建表要指定表的row格式,否则不能正确读取导入的数据信息
说明:1)在使用hive的时候,确保hdfs和mapreduce启动(start-all.sh)
2)hive执行的数据类型比较少,常用的类型:int samllint tinyint lagerint boolean double long string map struct
3)hive的安装目录的结果
bin:可执行的文件(二进制),例如:hive hiveserver2 hive-confing.sh等
config:hive的配置文件,里面的配置文件都是默认的配置文件,它是缺省配置服务的。如果需要自定义,配置文件需要创建一个hive-site.xml
docs:hive的参考文档
lib:存放jar的地方
metastore_db:该目录是启动hive的和时候,自动生成的一个目录,是用来存放hive的元数据信息。
4)derby数据库只支持单用户链接

13.内部表
create table t1(id int);
create table t1(id int) row format delimited fields terminated by '\t';
load data local inpath '/simple/xxx.txt' into table t1;
表的修改:
alter table targert_tab add columns(id int);
表的删除:
drop table db_name;
删除表的时候,对跟随的数据也随着丢失
drop database db_name;
在删除数据库的时候,如果数据库中存在表,不让删除;
复制一张表结构,但不导入数据:
creat table carcp like car;
说明:
以上操作完毕之后,可以再浏览器中查看hdfs上的目录结构进行对比
再启动hive的时候,会在hdfs上创建一个目录:user/hive/warehouse/库/表
数据信息在hdfs上都是以目录和文件形式存在,在操作数据的时候需要hdfs和
metastore配合使用。
http://192.168.189.100:50070/user/hive/warehouse/库/表/stu.txt
如果在Windows下面远程下载stu.txt文件时,会存在访问不到linux中hdfs路径,此时
需要host的目录:c:\windows\System32\drivers\etc\hosts文件
编辑hosts文件并添加:
192.168.189.100 iflysee.hfpan.com

14.外部表
创建表:
create external table external_tab(id int)row format delimited fields
terminated by '/t' localtion '/out'
此处的’/out'不会在hive的仓库目录(/user/hive/warehose)中生成,而是直接在
hdfs的根目录生成(hdfs://192.168.203.100:9000/out)
加载数据:
load data local inpath '/simple/xxx.txt' into table external_table;
当删除外部表的时候,metastore中元数据信息会丢失,但是外部目录中指数据不会
丢失,这说明metastore中的描述信息可以作为外部数据信息的一个引用。

15.分区表
创建表
create table t2(id int) partitioned by (day int);
create table t3(rectime string,msisdn string)partitioned by(daytime string,
city string) row format delimited fields terminated by ' ' stored as textfile;
//加载数据到分区
load data local inpath '/simple/gps.txt' overwirte into table t3 partition(nation=‘china’);
创建完分区表之后,可以通过desc 表明查看表的结构和外部表的结构有什么不同
\>desc table_name;
ok
address string None
year    int    None
num     int    None
nation  string None
#Partition Information
#col_name data_type comment
从上面可以看出nation字段虽然是分区字段,但是也可以作为表的一个字段属性,也就是说明在操作表
的时候,该字段也可以作为参数操作。
说明:再给分区表加载数据的时候,可以通过分区字段指定分区值,那么对应的数据会在Hive的数据仓库中的数据库下创建
不同的分区路径,形如:nation='china' nation=‘usa'
查看数据:
select * from table_name;
select count(*) from table_name;
select * from table_name where year='2014' and nation='usa';
show tables '*ca*';
show partitions table_name;
删除信息:
删除表:drop table table_name;
删除分区:alter table table_name drop partition(nantion='usa');
分区表跟内部表删除数据原理相似,即删除元数据信息metastore时,实际数据也会随着丢失

alter table pcar add(drop) partition (nation='uk');
show partitions pcar;

16.桶表
更高效!可取样!主要用于大数据集群的取样!
桶的原理是对一个表(或者分区)进行切片,选择被切片的字段,用字段与个数的hash值进行存储入桶。
创建表:
create table stu(id int,name string) clustered by(id) into 4 buckets row format delimited fields terminated by ' ';
insert into table t4 select id from t3;
桶表是对数据进行哈希取值,然后放到不同文件中存储。
加载数据:
set hive.enforce.bucketing=true;
insert into table bucket_name select id from stu;
insert overwirte table bucket_name select id from stu;
数据加载到桶表时,会对字段取哈希值,然后与桶的数量取模。把数据放到对应的文件中。
抽样查询:
select * from bucket_name tablesample(bucket 1 out of 4 on id);
set hive.enforce.bucketing=true;
select * from student tablesample(bucket 2 out of 3 on id);
create table sct like student;
insert overwrite table sct select * from student;
把一个hive的表导入到另一个已建hive表
insert overwrite table table_new select * from student;

17.视图
创建视图:
create view v1 as select * from table_name;
删除一个视图的时候不能使用 drop table view_name;
而是使用drop view view_name;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值