
hadoop 编程
文章平均质量分 90
fansy1990
这个作者很懒,什么都没留下…
展开
-
hadoop编程小技巧(1)---map端聚合
测试hadoop版本:2.4 Map端聚合的应用场景:当我们只关心所有数据中的部分数据时,并且数据可以放入内存中。使用的好处:可以大大减小网络数据的传输量,提高效率;一般编程思路:在Mapper的map函数中读入所有数据,然后添加到一个List(队列)中,然后在cleanup函数中对list进行处理,输出我们关系的少量数据。实例:在map函数中使用空格分隔每行数据,然后把每个单词添加到一个堆栈中,原创 2014-07-16 17:03:21 · 4404 阅读 · 0 评论 -
hadoop编程小技巧(2)---计数器Counter
Hadoop代码测试版本:2.4应用场景:在Hadoop编程的时候,有时我们在进行我们算法逻辑的时候想附带了解下数据的一些特性,比如全部数据的记录数有多少,map的输出有多少等等信息(这些是在算法运行完毕后,直接有的),就可以使用计数器Counter。如果是针对很特定的数据的一些统计,比如统计以1开头的所有记录数等等信息,这时就需要自定义Counter。自定义Counter有两种方式,第一种,定义原创 2014-07-16 17:30:50 · 2835 阅读 · 0 评论 -
hadoop编程小技巧(3)---自定义分区类Partitioner
Hadoop代码测试环境:Hadoop2.4原理:在Hadoop的MapReduce过程中,Mapper读取处理完成数据后,会把数据发送到Partitioner,由Partitioner来决定每条记录应该送往哪个reducer节点,默认使用的是HashPartitioner,其核心代码如下:/** Use {@link Object#hashCode()} to partition. */ p原创 2014-07-17 13:20:17 · 3270 阅读 · 1 评论 -
hadoop编程小技巧(4)---全局key排序类TotalOrderPartitioner
Hadoop代码测试版本:Hadoop2.4原理:在进行MR程序之前对输入数据进行随机提取样本,把样本排序,然后在MR的中间过程Partition的时候使用这个样本排序的值进行分组数据,这样就可以达到全局排序的目的了。难点:如果使用Hadoop提供的方法来实现全局排序,那么要求Mapper的输入、输出的key不变才可以,因为在源码InputSampler中提供的随机抽取的数据是输入数据最原始的ke原创 2014-07-18 14:05:59 · 4297 阅读 · 1 评论 -
hadoop编程小技巧(7)---自定义输出文件格式以及输出到不同目录
代码测试环境:Hadoop2.4应用场景:当需要定制输出数据格式时可以采用此技巧,包括定制输出数据的展现形式,输出路径,输出文件名称等。Hadoop内置的输出文件格式有:1)FileOutputFormat 常用的父类;2)TextOutputFormat 默认输出字符串输出格式;3)SequenceFileOutputFormat 序列化文件输出;4)MultipleOutputs 可以把输出原创 2014-07-24 13:28:15 · 6503 阅读 · 1 评论 -
hadoop编程小技巧(9)---二次排序(值排序)
代码测试环境:Hadoop2.4应用场景:在Reducer端一般是key排序,而没有value排序,如果想对value进行排序,则可以使用此技巧。应用实例描述:比如针对下面的数据:a,5b,7c,2c,9a,3a,1b,10b,3c,1如果使用一般的MR的话,其输出可能是这样的:a 1a 3a 5b 3b 10b 7c 1c 9c 2从数据中可以看到其键是排序的,但原创 2014-07-30 16:45:59 · 4862 阅读 · 0 评论 -
hadoop编程小技巧(8)---Unit Testing (单元测试)
所需环境:Hadoop相关jar包(下载官网发行版即可);下载junit包(最新为好);下载mockito包;下载mrunit包;下载powermock-mockito包;相关包截图如下:应用场景:在进行Hadoop的一般MR编程时,需要验证我们的业务逻辑,或者说是验证数据流的时候可以使用此环境,这个环境不要求真实的云平台,只是针对算法或者代码逻辑进行验证,方便调试代码。实例:Mapper:pac原创 2014-07-29 13:31:16 · 3503 阅读 · 0 评论 -
hadoop编程小技巧(5)---自定义输入文件格式类InputFormat
Hadoop代码测试环境:Hadoop2.4应用:在对数据需要进行一定条件的过滤和简单处理的时候可以使用自定义输入文件格式类。Hadoop内置的输入文件格式类有:1)FileInputFormat这个是基本的父类,我们自定义就直接使用它作为父类;2)TextInputFormat这个是默认的数据格式类,我们一般编程,如果没有特别指定的话,一般都使用的是这个;key代表当前行数据距离文件开始的距离,原创 2014-07-22 13:37:33 · 8595 阅读 · 4 评论 -
hadoop编程小技巧(6)---处理大量小数据文件CombineFileInputFormat应用
代码测试环境:Hadoop2.4应用场景:当需要处理很多小数据文件的时候,可以应用此技巧来达到高效处理数据的目的。原理:应用CombineFileInputFormat,可以把多个小数据文件在进行分片的时候合并。由于每个分片会产生一个Mapper,当一个Mapper处理的数据比较小的时候,其效率较低。而一般使用Hadoop处理数据时,即默认方式,会把一个输入数据文件当做一个分片,这样当输入文件较小原创 2014-07-23 11:09:02 · 3585 阅读 · 0 评论