hadoop中的关系型数据库.docx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hadoop中的关系型数据库

Hadoop中的关系型数据库(原创文档,转载请标明出处)文档时间2014/6/30各软件版本Hadoop2.2.0Hbase0.98.1Sqoop1.4.4前言4一. Hbase41. Hbase的目的42. Hbase的表设计41 行健(Row Key)52 列族(Column-Family)53 存储单元(Cell)54 时间戳(version)53. Hbase的表查询61 单行查询(get)62 多行查询(scan)64. Hbase的效率75. Hbase使用示例71 需求分析72 数据库设计83 数据样例94 查询代码样例10二. 以RDBMS为数据源111. 实现原理112. 编程接口113. 具体实现121 建立连接122 定义表对应的bean123 读取数据134 写入数据145 完整代码示例144. 注意事项15三. Sqoop171. Sqoop的作用172. 数据库导入HDFS171 命令行方式172 代码方式183. HDFS导入数据库181 命令行方式182 代码方式194. 数据库导入Hbase191 命令行方式192 代码方式205. Hbase导入数据库20前言MapReduce技术推出后,曾遭到关系数据库研究者的挑剔和批评,认为MapReduce不具备有类似于关系数据库中的结构化数据存储和处理能力。为此,Google和MapReduce社区进行了很多努力。一方面,他们设计了类似于关系数据中结构化数据表的技术(Google的BigTable,Hadoop的HBase)提供一些粗粒度的结构化数据存储和处理能力。另一方面,为了增强与关系数据库的集成能力,Hadoop MapReduce提供了相应的访问关系数据库库的编程接口。另外,我们还可以通过Sqoop,在关系型数据库和HDFS或Hbase间转换数据。一. Hbase1. Hbase的目的Hbase的设计类似于关系数据中结构化数据表的技术,它介于nosql和RDBMS之间,提供一些粗粒度的结构化数据存储和处理能力,主要用来存储非结构化和半结构化的松散数据。2. Hbase的表设计HBase以表的形式存储数据,表有行和列组成,列划分为若干个列族(column-family)。Hbase中的列族类似于RDBMS中的列(column),必须在数据插入前,即设计表结构时设计好。一行的每个列族中,均可容纳多个Cell,每一个Cell,都是一个K-V对。一个Hbase表结构如下图所示:Table1行列族Rowcolumn-family1column-family2row key1Cell1(k1-v1),Cell2(k2-v2)… …Cell3(k3-v3),Cell4(k4-v4)… …其中,Cell是一个虚拟的概念,我们在使用中,通过row key+ column-family+key,在确定获取唯一的值(value)。1 行健(Row Key)row key是用来检索记录的主键,用于访问hbase table中的行,row key是hbase中唯一可以用来创建索引的地方,row key可以是任意字符串。2 列族(Column-Family)hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。3 存储单元(Cell)Cell是一个逻辑上的存储单元,由{row key, column, version}?唯一确定。cell中的数据是没有类型的,是一个K-V对,全部是字节码形式存贮。4 时间戳(version)HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳可以由hbase在数据写入时自动赋值(通常缺省如此做),此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。用户在通过行健、列族和列键查询数据时也不需要指定具体的时间戳,而有系统返回最近时间戳的数据。在日常的使用当中,我们在大多数情况下实际上是忽略Hbase中时间戳的存在的。3. Hbase的表查询Hbase的表查询分为两种:单行数据的get查询;多行数据的scan查询。1 单行查询(get)单行查询适用于获取已确定知道row key的单行数据(可指定具体的列族,也可不指定),注意,类似于RDBMS中一行只有一条数据,Hbase中的一行数据中有多个Cell(K-V对)。示例代码:2 多行查询(scan)多行查询类似于RDBMS中的单表或多表多条件联合查询,适用于跨行多条件的复杂查询。Scan查询,目前支持在行健上的范围查询,以及可以在列族、cell中的键和值上分别添加多种形式的过滤器,来达到和RDBMS类似的复杂条件查询效

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档