不知不觉从事大数据开发,这么长的时间一直没有将知识进行一个体系化,现在终于决定要将所学技能整理一下了,哈哈哈哈(多亏了有个贤内助督促,帮我调整格式)。话不多说,我要开始了~。如果写的有不对的地方,欢迎大家指正,勿喷~。
目录
一、我对数据仓库和数据库二者的理解:
1.数据仓库特点:
①存放的数据是静态的、历史的、不能进行随意修改的,只能新增、查询
②数据仓库更加注重的是一个OLAP(联机分析处理----数据分析的目标则是探索并挖掘数据价值,作为企业高层进行决策的参考)的操作
③数据仓库不推荐执行事务操作
2. 数据库特点:
①更加注重的是在线、交易的、动态的数据
②数据库更加注重的是一个OLTP(联机事务处理 -----业务类系统主要供基层人员使用,进行一线业务操作)的操作
③数据库的操作依赖更多的业务的事务操作
二、通常所说的 ETL(提取转化加载):
E(Extract) :提取、采集
T(Transform) :转化、标准化、格式化
介绍:数据清洗Data clean:去除无用数据
数据脱敏Data desensitization:剔除敏感数据,将敏感数据隐藏(编程"*", 还有加密,还有做映射), 一般情况下都是通过mr来做
L(Loading) :加载
介绍:把原始的数据转化为数据仓库中建模好的格式或者标准的数据,然后在将标准化的数据加载到DW中的一个过程称之为ETL。(这里的建模或者模型,说白了就是数据仓库中表的定义,表和表之间的关系)
三、hive定义
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的海量数据的机制。Hive 定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和 reducer来处理内建mapper和reducer无法完成的复杂的分析工作。
Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。hive中的表其实就是hdfs的目录,按照表名把文件夹分开。如果是分区表,则分区值是子文件夹,我们可以直接在M/R的job中直接使用这些数据。
四、hive数据的存储
1、Hive的数据存储基于Hadoop HDFS
2、Hive没有专门的数据存储格式
3、存储结构主要包括:数据库、文件、表、视图、索引
4、Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile、RCFile 、ORCFile、Parquet
5、创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据
6、 hive的元数据存在于mysql中,在mysql中会有一个hive库,存放相应的表,一共53张表。(这是在hive配置文件中指定的)
五、Hive的元数据仓库
1、metastore是hive元数据的集中存放地。
2、metastore默认使用内嵌的derby数据库作为存储引擎
3、Derby引擎的缺点:一次只能打开一个会话
4、实践中多使用MySQL作为外置存储引擎,多用户同时访问
六、hive的运行方式
1、集群模式:
在生产中的运行方式,以mr、spark、tez作为计算引擎,进行分布式计算。
2、本地模式:
set hive.exec.mode.local.auto=true,这就可以在hive中进行简单的测试
七、hive的访问方式
1、CLI(命令行)
(1)通过hive的脚本
hive -e(接的是hql语句,可以是多条语句,用""引起来)
例如:hive -e "set hive.cli.print.header=true;use mydb1; show tables; select * from t;"
hive - f (接的是hql脚本)
例如:hive -f hive-script.hql
这两种方式,可以将最终的执行结果输出重定向到某一个文件中,需要添加两个参数-S
hive -S -f hive-script.hql > resutl.csv(输出重定向,有覆盖功能)
hive -S -f hive-script.hql >> resutl.csv (输出重定向,有追加功能)
2、JAVA API:
hive-jdbc
今天就先总结到这里,下面一篇文章,我会介绍一下hive的安装以及hive表的一些概念以及hive中数据的类型~