《 Hadoop 3大数据技术快速入门 》的笔记四

第7章 MapReduce编程

从编程角度讲,其过程是:在各Mapper端中,MapReduce框架将输入文件按行分割,一行作为一条数据,以每条数据作为输入参数循环调用map处理方法,再将一条条输出的数据分发给各Reducer,Reducer对每条数据调用一次reduce处理方法,得到最终结果。

第8章 Hive

HiveHive(相关信息可参考官方网站)是一个基于MapReduce的海量数据处理、分析工具,为我们利用Hadoop平台处理数据提供了一个简易途径。

Hive可以让我们用SQL的方式描述对数据如何处理,并解析SQL语句、转化成MapReduce job链、自动执行Job链输出结果,省去很多工作。

Hive被称作数据仓库工具,因为它适合做的事与关系型数据库是有差别的,它基于HDFS和MapReduce,适合做一些对数据进行抽取、转换、加载(ETL)的工作,而不适合做事务性的工作(修改这些数据),其原因是HDFS不支持随机写(比如update等SQL命令)

Hive适于做联机数据分析(OLAP),而不适于做联机事务处理(OLTP),所以大家喜欢将Hive为数据仓库而不是数据库。

Hive的初始定位不是一个独立的系统,只是提供一个便于利用MapReduce进行数据处理的辅助工具。随着功能的更新和发展,它的定位正在发生变化,变得越来越像一个数据库系统。

8.1 Hive的设计架构

为了让用户以关系型数据库方式查询和计算数据,Hive提供了表结构管理服务。

Hive支持的基本数据类型与其他数据库差不多。Hive会在数据文件之外独立地保存其表结构以及表的其他属性(这些叫作元数据meta),这就是表结构管理服务所提供的,这个服务的名字叫作MetaStore(元数据存储)。

通过Hive处理文件中的数据时需要先创建表,并将表与文件关联(当然要保证表的结构与文件中的数据是一致的,否则就会出错),然后就可以用SQL进行数据查询了。

8.2 运行架构

要使用Hive3,需先启动其服务程序HiveServer2,然后通过Hive提供的命令行工具连接,就可以进行交互式操作了。HiveServer2的命令行工具叫beeline。

HiveServer2的主要功能是接受客户端的连接,接收客户端发出的SQL语句,处理语句,转成MR作业链,执行MR作业,返回结果。

MetaStore的运行需要一个数据库支持。

MetaStore依赖的数据库也有两种部署模式:嵌入式和独立式。当采用Derby这样的嵌入式数据库时,MetaStore与数据库处于同一进程中;当采用MySQL这样的独立服务时,MetaStore以JDBC远程访问数据库。

已经存在一个或一堆文件,文件的数据都是结构化的,比如存储的是所有学生几年的考试成绩。为了能用Hive处理它们,我们会创建一个表score,然后将这些文件中的数据load到表中,这个load动作其实就是简单地复制了一下,将这些文件复制到Hive仓库目录中,然后就可以用类似SQL的方式处理这些数据了。

创建表时,必须保证表的结构与文件中的数据兼容,即表的列数与数据可分出的字段数相同,且对应的列与字段的类型要兼容(如果一个字段中含有非数字字符,就不能把它当成数值类型)。

对于文本文件,如何进行区分?在创建表时,除了指定表结构,也要考虑这些问题。在文本文件中,大多数结构化数据一条占一行,一条数据的字段之间以逗号、空格或其他符号分割,

ROW FORMAT表示定义一条数据的区分方式;

  • DELIMITED表示在语句中指定如何区分各条数据和一条数据中的字段。
  • FIELDS TERMINATED BY ','表示一条数据中各字段以逗号分割。
  • LINES TERMINATED BY '\n’表示各条数据以换行符分割。

Hive所使用的文件一般是其他系统产生的,所以不要指望每条数据都像MySQL的表一样有主键,即使有的数据有可以作为主键的字段(比如编号),也不能保证它的值没有重复,这是Hive表的一个特点。

8.10 Hive编程

Hive是一个关系型数据库,因此提供了JDBC API和ODBC API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值