Hive学习之三 《Hive的表的详解和应用案例详解》
一、Hive的表
Hive的表分为内部表、外部表和分区表。
1、内部表,为托管表。
2、外部表,external。
3、分区表。
详解:
内部表,删除表的时候,数据会跟着删除。
外部表,在删除表的时候,数据不会跟着删除。
默认分隔符:列 为 \001 行分隔符为 \n
分区表:
1、解决查询效率,不全表查询,只查对应的分区。
2、避免数据重复的问题,即数据质量方面安全。
create table tablename ( 字段1 字段类型 , 字段2 字段类型 ) PARTITIONED BY (分区1 分区类型1,分区2 分区类型2) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
二、hive的配置文件。
/etc/hive/conf 下:
hive-env.sh 设置环境变量相关
hive-site.xml:属性参数配置。
Hadoop的配置文件路径:
/etc/hadoop/conf
三、hive的核心操作语句。
insert和select。
insert数据的时候必须指定分区,不指定分区就报错。
查询的时候带分区范围,比如:分区1=’’
不懂建表,看步骤一。
1、insert的两种方式:
①append 是一种追加方式,基本不是特别常用。
②overwrite 是一种覆盖方式,操作方式为先删除,后插入。相对企业来说,安全级别高。
Load文件:加载文件到hive表。
①我们先在本地建立一个文件夹,用来存储需要加载的文件,比如
mkdir /opt/muzi/test
通过rz操作,上传需要加载的文件。
load语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
应用案例代码:
推荐使用[OVERWRITE]
LOAD DATA LOCAL INPATH '/opt/muzi/text/文件1' overwrite INTO TABLE tablename PARTITION (分区1='分区的东东(比如时间什么的)');
2、查询语句
语法很简单
select 字段名 from tablename where 分区1='分区数据' limit n行数据;