hadoop介绍:

hive的函数介绍(join、内置函数、窗口函数,有例子解析用法):

1、hive是什么

一个数据仓库,将我们编写的sql表映射到hdfs上,方便存储以及查询修改等等操作。

2、hive的特点

1、可扩展性

很好理解,hive是依托于hadoop存在的,所以hive存储的数据也是在分布式文件系统上的,可以自由的扩展规模。

2、延展性

hive可以基于多种数据库作为元数据,它的默认数据库是derby,一般我都会使用mysql,但是不管是什么,都可以使用sql语言,所以可以根据自己的需求实现代码。

3、容错性

hive不会因为结点出现问题而停止运行。

3、hive和hadoop的流程

hive在工作中的应用 hive功能介绍_hive

4、为什么使用Hive

直接使用hadoop所面临的问题

  • 不好直接上手
  • 项目周期要求太短
  • MapReduce实现复杂查询逻辑开发难度太大,响应时间太长。

使用Hive的好处

  • 操作接口采用类SQL语法,操作简单,且普及。
  • 避免了去写MapReduce,减少开发人员的学习成本。
  • 功能扩展很方便。
5、hive的内部表和外部表

sql语句中删除命令是drop …,当我们drop一个内部表时,我们删除的不仅是这个内部表的元数据,还包括它的数据目录等等。

而当我们drop一个外部表,我们只会删除它的元数据,不会删除别的。

6、hive的分区和分桶

1、分区

是我们在表的数据之外,自己给定义了一列用来区分表中的数据,他只是会显示,但是并不会存在在数据表中.

可以理解成一个个文件夹,我们起了不同的名字,然后将表中的数据放进去,关键词是partitioned by

注意,分区的写的关键词一定不能是数据表中存在的,必须不一样。
例如:

hive在工作中的应用 hive功能介绍_数据_02


2、分桶

根据需求制定表的某一列为基准,加入分三个同,就用那列每个数据的hash值对3取模,相同的为一个桶,关键词是clustered by

注意,分桶的桶,必须是数据表中存在的。

hive在工作中的应用 hive功能介绍_hadoop_03

7、hive shell命令交互

1、CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;可以用 IF NOT EXISTS 选项来忽略这个异常。

2、EXTERNAL关键字可以让用户创建一个外部表

3、通过

ROW FORMAT 
DELIMITED FIELDS TERMINATED BY '.....'

去指定读取文件中的分隔符

4、hive的数据导入导出:

–导入数据到hive表

  1. 从本地导入: (本地目录)

load data local inpath ‘/home/1.txt’ (overwrite)into table student;

  1. 从Hdfs导入:(就是你配置安装hive时在hdfs上建立的目录)

load data inpath ‘/user/hive/warehouse/1.txt’ (overwrite)into table student;

  1. 查询导入:(导入一个查到的表)

create table student1 as select * from student;(也可以具体查询某项数据)

4.查询结果导入:

insert (overwrite)into table staff select * from track_log;

–导出hive表的数据到hdfs和本地磁盘

  1. 用insert overwrite导出方式 (最常用)

a) 导出到本地:

insert overwrite local directory ‘/home/robot/1/2’ rom format delimited fields terminated by ‘\t’ select * from staff;(递归创建目录)

b) 导出到HDFS

insert overwrite directory ‘/user/hive/1/2’ rom format delimited fields terminated by ‘\t’ select * from staff;

2.Bash shell覆盖追加导出

例如:$ bin/hive -e “select * from staff;” > /home/z/backup.log

3.Sqoop把hive数据导出到外部