文档章节

跟小菜一起学大数据之工具篇(一)

小仙女的老苞米
 小仙女的老苞米
发布于 2017/08/30 21:02
字数 1409
阅读 19
收藏 1

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

        首先申明一点,小菜并非大神,只是一个刚入门大数据的菜鸟在这里跟大家分享一下学习心得,也算是对自己学习的一种总结,对于文章中的错误之处,欢迎大家指正。

        工欲善其事,必先利其器,想学好大数据那就必然现要学会一些基本的大数据工具,这一些列着重分享一些小菜在学习过程中的一些心得与体会。本篇作为开篇作今天先分享一下在大数据平台下最常用的两个工具,即Hbase与Hive。很多人可能会想学大数据一开始为什么不学Hadoop平台搭建与使用,或者HDFS的使用,小菜的想法是Hadoop与HDFS想一下深入理解没那么容易,所以先从偏应用的开始谈起,待循序渐进熟悉了之后再回过头来聊聊Hadoop,聊聊HDFS会更好理解一些。废话不多说,开始聊正事。  ​    ​
    ​   首先先看一下Hbase,HBase是一个分布式的、面向列的开源数据库。他不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。很多人不太理解什么叫基于列而不是基于行的。这里举个例子说明一下,像通常的关系型数据库就是典型的行模式,一张表创建后列是固定的(不考虑修改的情况,这里只说在表的应用期间),但对于行,是可以随意增减的。而对于Hbase来说,他的存储是基于列的,也就说他的列是不固定的,每一条数据只是单纯的以rowkey做为唯一标识。任意一条数据写入的时候需要哪些列就将数据值与列对应清楚即可(具体写法会在后续讲到),而这么做除了可以很方便的对表结构进行扩展外还有一个更大的好处就是可以节省存储空间,由于他的这种存储结构导致他的每一条数据列数可以是不一样的,举个形象化的例子就是在传统关系型数据库中,每一行的数据列是固定,哪怕有些数据的某几列是空的,但这一列还是要存储下来,占用一定的存储空间,而对于hbase由于他的列是不固定的,这样当某条数据的某列值为空时,该列压根就不会存储下来,这样就可以大大的节省空间并且同时提高了数据读取的性能。

    ​    ​ 接着说一下Hbase的逻辑结构,对于初级使用者来说基本清楚rowkey和列簇,列这几个概念就可以了,至于时间戳和cell在初期几乎用不到。所谓rowkey也就是传统关系型数据库中的主键,每一条数据都会对于一个唯一的rowkey。每一张hbase表可以对应多个列簇(考虑到性能问题经验数据建议普通hbase表最多建不超过三个列簇),每一个列簇可以对应多个列。每一列的对于列赋值包括引用时都需要指定列簇名和列名,即:put(列簇名,列名,value) 即可。

为了便于理解Hbase基于列的设计理念,这里举一个形象化的数据结构

从图中可以很明显的看出对于Hbase来说,1、列是可以随意扩展 2、每一行数据的列可以是不同的。小菜以为,这便是Hbase的核心思想所在。

    ​   接着聊一下Hive,hive是基于Hadoop的一个数据仓库工具,也可以近似的理解为一个基于Hadoop的ETL工具。他可以将存储在hdfs上面的结构化数据文件映射为一张数据库表,也可以自己创建新表并写入数据,但他自己本身并不存储数据,只是提供一个逻辑关系,真正的数据存储在hdfs上面。他最大的优势是提供简单的sql查询功能,并可以将传统的sql语句转换为MapReduce任务进行运行。 也就是对于只熟悉sql但是对map-reduce开发并不十分熟的人可以利用它在大数据平台上做一些ETL即统计分析。有点需要说明,在传统的ETL过程中会涉及到一些比较复杂清洗工作,在hive上涉及到比较复杂的清洗转换时同样可以做,这里就要顺便介绍一下UDF函数了。

    ​   UDF函数可以直接应用于select语句,对查询结构做格式化处理输出内容,自定义UDF需要继承org.apache.Hadoop.Hive.ql.UDF,实现evaluate函数(相当于重写evaluate函数)。简单的讲udf函数就是一种可以直接在hql(hive上的sql)上用的轻量级函数,在函数内部可以定义一些清洗或者转换的方法从而间接的对数据的清洗与转换。

© 著作权归作者所有

小仙女的老苞米
粉丝 7
博文 5
码字总数 5794
作品 0
青岛
私信 提问
加载中

评论(0)

win10彻底禁用自动更新,win10怎样彻底关闭自动更新,永久关闭win10自动更新,win10更新助手

首先,请广大win10受害者原谅小菜用一个如此长的标题来吸引你们,为了尽最大努力帮助那些饱受win10自动更新折磨的朋友们,小菜不得已出此下策,望见谅! windows 10是一个神奇的操作系统,当...

杨元
2019/03/18
0
0
如何学习大数据 学大数据有技巧吗

先在的大数据技术人员备受各大企业及用人单位的青睐,因此参加大数据培训学习大数据的人员也在不断的增加,但是关于学习大数据的技巧很 多人不是很清楚,纷纷询问如何才能快速的学好大数据,...

董黎明
2018/09/15
19
0
如何搭建高效率的生鲜 B2B 平台(B2B 技术共享第一篇)

很开心在这里和大家交流,我们是一群生鲜B2B的创业者,在生鲜领域创业三年多;我们也是一群工程师,致力于通过互联网产品和技术让我们的农业更轻松更健康,我们是来自宋小菜的产品技术团队,...

Scott
2018/06/11
0
0
java——获取视频某一帧的图片

  最近小菜有幸接触模仿淘宝评论的功能,难点主要就在视频和图片的轮播,主要是前端处理img和video标签的交替使用,这块的内容分享在上篇博客中会有,本篇博客小菜主要分享一下如何从获取的...

smile*_*ing*
2019/02/17
0
0
Flutter 88: 初识状态管理 Bloc (三)

小菜刚学习了 FlutterBloc 的基本用法,使用的场景还很简单,主要是单一 Bloc 的应用,今天小菜继续尝试多个 Bloc 共用的场景; 小菜继续完善前两节的 Demo,添加了随机变更背景色的功能(并没...

阿策~
05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 头发和不要头发,你总要选一个

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《雾 缀じた街 ふたつのかげ》- Porkkana 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
41
0
一道 算法题 引发的 ‘xx现场’

请 熟悉的语言 去 验证 在输入框中输入的是否是一个正确的网址 初次读题萌新有点 不知所措的样子一查 MDN 吓一跳 ----- 一个不怎么熟悉的方法跳出眼边URL() 构造函数返回一个新创建的 ...

酒窝yun过去了
今天
19
0
如何检查jQuery中是否已选中复选框? - How to check whether a checkbox is checked in jQuery?

问题: I need to check the checked property of a checkbox and perform an action based on the checked property using jQuery. 我需要检查复选框的checked属性,并使用jQuery根据check......

技术盛宴
今天
12
0
mongoose 使用

http://www.mongoosejs.net/ 编写MongoDB验证,转换和业务逻辑是非常麻烦的. 所以Mongoose应运而生了. const mongoose = require('mongoose');mongoose.connect('mongodb://localhost/te......

东东笔记
今天
30
0
微服务

什么是微服务? 使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且他们可以通过自动化的方式部署。 微服务的特征 单一职责 轻量级通信 ...

鸿FW
今天
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部