Partition取值
来源:互联网 发布:淘宝网秧歌服山东菏泽 编辑:程序博客网 时间:2024/06/05 19:21
今天在做日志分析的时候遇到一个问题,数据总是对不上(一个是通过Mapreduce计算,另一个通过hive计算的),找了半天,发现时以下错误:
java.io.IOException: Illegal partition for com.sohu.tv.amstat.mr.AdvBookFlightSummary$CompositeKey@63d87b85 (-3)at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:1073)at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:691)at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80)at com.sohu.tv.amstat.mr.AdvBookFlightSummary$AdMapper.map(AdvBookFlightSummary.java:265)at com.sohu.tv.amstat.mr.AdvBookFlightSummary$AdMapper.map(AdvBookFlightSummary.java:203)at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)at org.apache.hadoop.mapred.Child$4.run(Child.java:255)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:396)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1083)
可以看出,partitionor返回的值是-3,所以才会抛出这个异常,我看了下我的partionor代码:
public static class AdvBookFlightPartition extends Partitioner<CompositeKey, CompositeVal> { @Override public int getPartition(CompositeKey key, CompositeVal value, int nums) { return key.getRt().hashCode() % nums; } }hashCode方法会返回一个负值,所以取模后,partition的值是负数。
修正后即可:
public static class AdvBookFlightPartition extends Partitioner<CompositeKey, CompositeVal> { @Override public int getPartition(CompositeKey key, CompositeVal value, int nums) { return Math.abs(key.getRt().hashCode()) % nums; } }
- Partition取值
- 两张表关联,其中一张表关联结果不唯一,用row_number() over(partition by)取唯一值再做关联
- sqlserver2005巧用row_number和partition by分组取top数据
- Partition
- PARTITION
- partition
- partition
- partition
- Partition
- partition
- partition
- sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据
- 不想用Rank 和Partition by取一组数据中最大项的行
- row_number和partition by分组取top数据,每组查询前N条
- hive语句 partition(dt=substr('2016-12-01',1,7))取分区问题
- jquery radio取值,checkbox取值,select取值
- jquery radio取值,checkbox取值
- 取值和取址的区别
- android 发送状态栏通知
- 值得学习的网站
- C++ 类的设计规则
- linux 线程 pthread_create 源码 剖析
- 搜集的一些git的文章
- Partition取值
- include()和require()的区别 总结
- 使用jdbc链接mysql数据库
- Linux Route 的一般用法
- PHP扩展:curl
- 《权力的游戏》蕴含的管理经
- android apk应用关机功能的开发
- OVER(PARTITION BY)函数介绍
- 使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等