文档章节

hadoop下Illegal partition for问题处理

七水禾
 七水禾
发布于 2014/03/11 12:56
字数 452
阅读 123
收藏 0

1.背景:

    对一个文件中的key进行过滤,需要过滤的key存储在另一个文件中。需要过滤的key数量很大,有上亿条,因此采用bloomfilter等方法不太合适。同时文件中的带过滤的key可能会很多也可能很少。因此采用value二次排序的方法过滤,将需要过滤的key做成key0,真实的key做成key1。使用分区函数和key比较函数将相同的key发送到同一个机器上,只要判断key的第一个key值key0是否存在就可以确定key是否需要过滤。

2.问题:

    采用二次排序,需要实现getPartition函数。考虑到hash函数可能返回负数,因此返回是使用了这样一个函数Math.abs(k)%numReduceTasks。  一开始测试的时候没有发现问题,后来将输入文件增多后发现程序会报Illegal partition for错误。

3.处理过程:

    直接求助google, 从http://blog.csdn.net/hezuoxiang/article/details/6878026 中看出来,错误是因为分区函数返回了负数,这个值不合理。一时有点懵,难道Math.abs(x)返回的不是正数?再次求助google,http://blog.sina.com.cn/s/blog_71643cb101012442.html 明白了原来x很大(溢出变成负数)或者很小的负数时,即超过了int的表示范围。返回会是个负数。至此,知道了问题的关键,通过hash得到的k值太大,或者太小,超过了int的可表示范围。嗯,c/c++程序员用java写hadoop就是一堆坑要踩。

4.解决方法:

    (1) 换一个hash函数,使得hash值在int能表示的范围内。

     (2) 对hash函数的值先取模在取绝对值 Math.abs(k % numReduceTasks);。
 



© 著作权归作者所有

七水禾
粉丝 0
博文 7
码字总数 4046
作品 0
海淀
程序员
私信 提问
Apache Spark SQL自适应执行实践

本文作者:汪愈舟 俞育才 郭晨钊 程浩(英特尔),李元健(百度) Spark SQL是Apache Spark最广泛使用的一个组件,它提供了非常友好的接口来分布式处理结构化数据,在很多应用领域都有成功的...

Spark
2018/01/11
0
0
【故障处理】imp-00051,imp-00008

【故障处理】imp-00051,imp-00008 1.1 BLOG文档结构图 1.2 故障分析及解决过程 imp导入报错: IMP-00051: Direct path exported dump file contains illegal column length IMP-00008: unre......

lhrbest
2017/01/08
0
0
sqoop2的安装-执行-问题

一、安装 1.解压 2.引入环境变量 vi ~/.bashrc export SQOOP_HOME=/home/hadoop/sqoop/sqoop-1.99.7-bin-hadoop200 export PATH=$PATH:$SQOOP_HOME/bin export SQOOPSERVEREXTRALIB=$SQOOPHO......

SnailEatA
2017/11/06
17
0
Spark Shuffle数据处理过程与部分调优(源码阅读七)

  shuffle。。。相当重要,为什么咩,因为shuffle的性能优劣直接决定了整个计算引擎的性能和吞吐量。相比于Hadoop的MapReduce,可以看到Spark提供多种计算结果处理方式,对shuffle过程进行了...

雪童子
2016/11/25
0
0
跟A君学大数据(三)--利用MapReduce对多文件数据进行排序

版权声明:本博客所有的原创文章,转载请注明出处,作者皆保留版权。 https://blog.csdn.net/anLA_/article/details/88747102 先来一个小插曲 MapReduce Job中的全局数据 在MapReduce中如何保...

6点A君
03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

反编译9.png图片还原

本文链接:https://blog.csdn.net/a1140778530/article/details/10528507 经常反编译apk文件找资源,9.png的文件处理起来很麻烦。 最近使用Ant自动编译打包app时,从别处搜罗来的9.png文件导...

shzwork
20分钟前
6
0
Shell脚本应用 – for、while循环语句

一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种...

linux-tao
20分钟前
5
0
RPA风潮下企业财务工作模式的变革

RPA(机器人流程自动化)在财务领域的应用,正给企业财务带来前所未有的改变。 前RPA时代,财务领域面临的痛点 在RPA机器人应用之前,企业财务工作进程的推进,主要通过财务人员人工操作或信...

UiBot
25分钟前
5
0
Hive之命令行修改表注释

最近遇到一个需求,在不重建表的情况下,修改表的注释,hive有没有类似关系型数据库的SQL命令来修改呢,找了下,亲测有效,如下List-1 List-1 hive>use your_schemahvie>ALTER TABLE tabl...

克虏伯
26分钟前
5
0
是什么,它的作用是什么

在HTML文档的首部往往会有这么一句话<!DOCTYPE html>,许多时候我们忽视了它的存在,它实际上是一个声明,告诉浏览器用哪种HTML版本的规范来解读HTML文档。 尽管我们不给出这句声明浏览器照样...

前端老手
31分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部