天天看点

Hive基础hive的基本简介

hive的基本简介

hive概念:基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。Hive利用HDFS存储数据,利用mapreduce查询分析数据,本质是将SQL转换为mapreduce程序,比直接使用mapreduce开发效率高。

hive的元数据存储:通常存在关系数据库中,如mysql.hive中将元数据存储在数据库中,hive的源数据包括表名称,表的列,表分区,表属性,其中表属性(是否为外部表等),表的数据所在目录等。

hive与传统DB的区别:

传统数据库:OLTP->面向事务操作型处理,就是关系型数据库mysql,oracle,sqlserver,db2。主要是支持业务,面向业务。

Hive:OLAP->面向分析分析型处理,就是数据仓库,面对的是历史数据开展分析。

Hive数仓开发基本流程

  1. 从业务系统获取数据
  2. 数据存储
  3. 写SQL开发需求
  4. 配置调度系统
  5. 导出数据&展示

从业务系统获取数据的几种方法

  1. sqoop导入数据库的数据:sqoop可以在Hive与传统的数据库之间进行数据的传递,可以将一个关系型数据库中的数据导进到hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
  2. Flume采集文本数据:flume可以将各类型的文件进行采集,存放入hdfs中。
  3. Ftp文件服务器:从文件服务器上下载分析所需的源数据(增量数据、全量数据)。

数据存储的几种方式:

  1. 数据仓库分层ods层,dw层,da层。
  2. 源数据ods层:直接引用外围数据,没有统一格式,不会直接应用,不利于分析。
  3. 数据仓库层dw层:来自于ods要经过ETL的过程,格式统一,数据规整。
  4. 数据应用层da层:要去用dw层数据,真正的数据使用者。
  5. 数据集市:满足特定的部门或用户的需求,按照多维的方式进行存储,包括定义维度,需要计算的指标,维度的层次等,生成面向决策分析需求的数据立方体。

hive sql知识点

1、DML&DDL

        DML:数据操纵语言

        DDL:数据定义语言

2、外表和内表

外表:被external修饰,表数据由HDFS管理,表数据的存储位置由自己指定,删表仅仅会删除元数据,HDFS上的文件并不会被删除。

内表:没有external修饰,表数据由hive自身管理,表数据存储的位置默认,删除表会直接删除元数据以及存储数据。

3、分区、分桶

分区:partation by

静态分区:建立分区表,加载数据

建立分区表:create table par_tap(name string,nation string)partition by (sex string) row format delimited fields terminated by ‘,’;

加载数据:load data local inpath’/home/Hadoop/files/par_tab.txt’into table par_tap partition by (sex=’man’);

动态分区:开启动态分区功能,加载数据

开启:set hive.exec.dynamic.partation=true;

加载数据:insert overwrite table par_dnm partition(sex=’man’,dt)select name,nation,dt from par_tap;

分桶:clustered by(字段) into num_buckets

分桶功能默认不开启,需要手动开启:set hive.enforce.bucketing = true;分几个桶,也需要自己指定:set mapreduce.job.reduces = N;导入数据insert+select

4、UDF

用户自定义函数

继续阅读