文档章节

Hive基础知识

i
 iamchenli
发布于 2017/02/24 10:55
字数 1040
阅读 36
收藏 1

1、Hive有四种类型的表

1.1、内部表,删除时,表数据同时删除

create table if not exists cl_stu(id int,name string) ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' location '/hive_data';

location为hdfs的目录路径。如果创建内部表时没有指定location,系统默认会在配置项hive.metastore.warehouse.dir定义的路径中,例如/user/hive/warehouse/下新建一个表目录

无论是否指定location,load数据进去,会把数据复制到hdfs指定的目录下面,当删除的时候,这个hdfs文件就会被删除

1.2、外部表,删除表不删除数据,方便共享数据,描述表的信息会被删除

create external table if not exists hff_rbi_roaming_all(
acc_nbr                       string,
date_time                       string,
roamingname string,
create_time string
)row format delimited fields terminated by '\001' location '/yw/hff_rbi_roaming_all';

load数据进去,会把数据复制到hdfs指定的目录下面,当删除的时候,这个hdfs文件就不会被删除,当我们重新建个外部表指定到同一个路径的时候,我们就能select数据出来

1.3、分区表,提高查询性能

create table if not exists hff_rbi_roaming_all(
acc_nbr                       string,
date_time                       string,
roamingname string,
create_time string)partitioned by (month string)

 

1.4、外部分区表

create external table if not exists dgdw.YFF_RBI_SJ(
SESSIONID                string
)partitioned by (receive_day string) row format delimited fields terminated by '|' location '/yw/YFF_RBI_SJ'

 

查看表结构 desc 表名,如果想看详细的,describe formatted 表名

2、四种数据导入方式

(1)、从本地文件系统中导入数据到Hive表;

load data local inpath ‘路径’ [overwrite] into table 表名

例如:load data local inpath '/home/cl_stu.txt' into table test.cl_student;

注意:执行此命令的时候,需要在有此文件的主机上执行hive,否者会报错FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 'txt'
(2)、从HDFS上导入数据到Hive表;

load data  inpath '路径' [overwrite] into table 表名


(3)、从别的表中查询出相应的数据并导入到Hive表中

insert overwrite table tb1 select a.acc_nbr acc_nbr from acc_nbr2

insert into table tb1 select a.acc_nbr acc_nbr from acc_nbr2


(4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。

create table b as select * from a

 

数据导出

set hive.merge.mapredfiles=true #在Map-Reduce的任务结束时合并小文件

set hive.merge.size.per.task=256000000 #合并文件的大小

set hive.merge.smallfiles.avgsize=16000000 #当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge

(1)hadoop fs -get hdfs路径 linux路径

(2)insert overwrite local directory '/home/' select * from b2i_overnet_4;

 

3、insert与update操作

hive不支持用insert语句一条一条的进行插入操作,也不支持update操作(后续版本有支持该功能)

4、分区:分区的作用是为了提高查询性能

添加分区

alter table dw.RBI_ZQ add if NOT EXISTS partition(receive_day = 20170213);

删除分区

alter table dw.tb drop if exists partition(receive_day=201612);

修改分区

alter table tb_comm set location 'hdfs://yw/tb_comm';

例:如果建表的时候设置了错误的分区后,用上面语句重新设置了分区后,需要重新删除分区和添加分区,否则,将查询不到这些分区数据

 

5、hive里面执行hdfs的命令和shell命令

hive cli中查看dfs命令  dfs -ls /yw; 

在shell中执行hdfs命令:hadoop fs -ls

hive也可以执行shell的命令,如:!pwd;

 

6、类型转换

string类型字段转换成bigint,hive也会默认自动转换类型的

select cast(name as bigint)-100,age from cl_stu where id=120;

 

7、增加新列

alter table cl_stu add columns (subject string comment 'Add new column');

 

8、hdfs获取表的文件

hadoop fs -get /yw/shcz/ /home/chenli/

9、lzo文件

create table as select 这种语法默认是存储压缩格式的文件,减少存储空间,

1、可以通过解压解决这种格式

hadoop fs -get /ywzc/dgdw/tf_daily_move_list/*.lzo /data/etl/tmp/tf_daily_move_list/

lzop -cd /data/etl/tmp/tf_daily_move_list/*.lzo >> /data/etl/tmp/tf_daily_move_list/tf_daily_move_list.dat

hadoop fs -rm /ywzc/dgdw/temp/tf_daily_move_list/*

hadoop fs -put /data/etl/tmp/tf_daily_move_list/tf_daily_move_list.dat /ywzc/dgdw/temp/tf_daily_move_list/

rm /data/etl/tmp/tf_daily_move_list/*

2、可以暂时关闭这种压缩,只对当前会话有效

set hive.exec.compress.output=false;

 

 

10、hive常见的配置

 

© 著作权归作者所有

上一篇: Linux常用命令
i
粉丝 11
博文 54
码字总数 22119
作品 0
广州
程序员
私信 提问
Cloudera 数据分析师培训:Pig、Hive和 Impala(CCA159)

Cloudera 数据分析师培训:Pig、Hive和 Impala 通过 Cloudera 公司的 Apache Hadoop 培训将您的知识提升到一个新的水平。 Cloudera 大学提供的为期四天的数据分析培训课程专注于 Apache Pig...

活动家
2017/06/26
73
0
大数据教程(12.1)hive中SQL操作补充知识

上一篇博客分享了hive的基础操作知识,本节博主将继续补充分享一些hive的SQL操作知识。 一、保存select查询结果的几种方式: 二、Hive Join操作 三、具体实例: 1、获取已经分配班级的学生姓...

em_aaron
01/26
19
0
大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 (2)修改表 (3)删除表 (4)显示命令 特此说明:使用./hive命令行是支持dfs命令的,如图...

em_aaron
01/24
40
0
Cloudera 数据分析师培训:Pig、Hive 和 Impala 

本次培训将于2017年12月2日至5日在上海举办,Cloudera 数据分析师培训:Pig、Hive 和 Impala 报名平台活动家。 通过Cloudera 公司的Apache Hadoop 培训将您的知识提升到一 个新的水平。 Clou...

活动家
2017/10/16
7
0
大数据经典学习路线(及供参考)之 一

1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构; 学完此...

柯西带你学编程
2018/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
5
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部