hadoop开发者第三期-大数据文档资料.docx
Hadoop开发者第三期2010年6月20日发布
欢迎投稿
出品
Hadoop技术论坛
总编辑
易剑(一剑)副总编辑
Barry(beyi)代志远(国宝)
本期执行主编代志远(国宝)
编辑
皮冰峰(若冰)易剑(一剑)Barry(beyi)贺湘辉(小米)Barry(beyi)代志远(国宝)柏传杰(飞鸿雪泥)何忠育(spork)秘中凯陈炬
排版/美工/封面设计代志远(国宝)
网址
投稿信箱
hadoopor@
刊首语
新一期的Hadoop开发者与大家见面了。不知不觉
Hadoop开发者已经与大家携手走过半年多了,感谢各位长久以来多Hadoop开发者的支持与鼓励。
Hadoop是大家目前最热衷的技术话题之一,继09年评出国际十大影响力的热门技术榜首的MapReduce编程,基于MapReduce实现的Hadoop开源框架逐渐在被大家所接纳和使用,成为了目前市场中最热门的技术之一。
应运而生的Hadoop开发者致力于提供给大家最好的Hadoop咨询,让大家更方便的学习Hadoop的应用,但是由于人力有限,在每期中所能提供的文章质量难以达到最佳。需要让Hadoop开发者办的更好,就需要大家的努力和共同的提高,集思广益,需要Hadoop爱好者共同的参与。
希望大家多多投稿,多提意见。
Hadoop开发者编辑组本期执行主编:国宝2010-6-20
目录
1Hadoop中的数据库访问 5
2MapReduce中多文件输出的使用 13
3Zookeeper使用与分析 22
4浅析一种分类数据模型 30
5Sector框架分析 34
6RunonHadoop 49
Hadoop中的数据库访问
作者(飞鸿雪泥)E-mail:jaguar13@
Hadoop主要用来对非结构化或半结构化(HBase)数据进行存储和分析,而结构化的数据则一般使用数据库来进行存储和访问。本文的主要内容则是讲述如何将Hadoop与现有的数据库结合起来,在
Hadoop应用程序中访问数据库中的文件。
一.DBInputFormat
DBInputFormat是Hadoop从0.19.0开始支持的一种输入格式,包含在包org.apache.hadoop.mapred.lib.db中,主要用来与现有的数据库系统进行交互,包括MySQL、PostgreSQL、Oracle等几个数据库系统。
DBInputFormat在Hadoop应用程序中通过数据库供应商提供的JDBC接口来与数据库进行交互,并且可以使用标准的SQL来读取数据库中的记录。在使用DBInputFormat之前,必须将要使用的JDBC驱动拷贝到分布式系统各个节点的$HADOOP_HOME/lib/目录下。
在DBInputFormat类中包含以下三个内置类:
1.protectedclassDBRecordReaderimplements
RecordReaderLongWritable,T:用来从一张数据库表中读取一条条元组记录。
2.publicstaticclassNullDBWritableimplementsDBWritable,Writable:主要用来实现DBWritable接口。
3.protectedstaticclassDBInputSplitimplementsInputSplit:主要用来描述输入元组集合的范围,包括start和end两个属性,start用来表示第一条记录的索引号,end表示最后一条记录的索引号。
其中DBWritable接口与Writable接口比较类似,也包含write和readFields两个函数,只是函数的参数有所不同。DBWritable中的两个函数分别为:
publicvoidwrite(PreparedStatementstatement)throws
SQLException;
publicvoidreadFields(ResultSetresultSet)throwsSQLException;
这两个函数分别用来给java.sql.PreparedStatement设置参数,以及从java.sql.ResultSet中读取一条记录,熟悉JavaJDBC用法的应该对这两个类的用法比较了解。
二.使用DBInputFormat读取数据库表