自定义类型要实现WritableComparable 接口,(之前只实现Writable  ,结果报错)

问题的主要原因是因为自定义类型在Partitioners 阶段要用到hashCode() 方法,以及compareTo(),也可以看一下IntWritable的实现代码。

所有还是要了解hadoop数据流的整个流程,遇到问题时才游刃有余。

import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;public class Byes_Myself_Key   implements WritableComparable { public String  s_key;public String s_value;public Byes_Myself_Key() {this("","");}public Byes_Myself_Key(String key,String value) {this.s_key=key;this.s_value=value;}/*** @return {@link Vector} that this is to write, or has*  just read*/public String getFirst() {return s_key;}public String getValue() {return s_value;}public void set(String key,String value) {this.s_key=key;this.s_value=value;}
public String toString(){return s_key+":"+s_value;
}@Override
public void readFields(DataInput in) throws IOException {// TODO Auto-generated method stubthis.s_key=in.readUTF();this.s_value=in.readUTF();
}@Override
public void write(DataOutput out) throws IOException {// TODO Auto-generated method stubout.writeUTF(s_key);out.writeUTF(s_value);
}@Override
public int compareTo(Object arg0) {// TODO Auto-generated method stubByes_Myself_Key other=(Byes_Myself_Key)arg0;return this.s_key.compareToIgnoreCase(other.s_key);
}/*** @return true if this is allowed to encode {@link Vector}*  values using fewer bytes, possibly losing precision. In particular this means*  that floating point values will be encoded as floats, not doubles.*/
/* 实现 hashCode() 方法很重要* Hadoop的Partitioners会用到这个方法,后面再说 */public int hashCode(){return this.toString().hashCode();
}}

转载于:https://www.cnblogs.com/surongyou/archive/2013/01/05/2845635.html

hadoop自定义类型注意问题相关推荐

  1. Hadoop日记Day13---使用hadoop自定义类型处理手机上网日志

    测试数据的下载地址为:http://pan.baidu.com/s/1gdgSn6r 一.文件分析 首先可以用文本编辑器打开一个HTTP_20130313143750.dat的二进制文件,这个文件的内 ...

  2. Oracle type (自定义类型的使用)

    oracle - type type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要 ...

  3. Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)

    1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...

  4. GreenDao存储自定义类型对象解决方案(转)

    最近公司项目选用GreenDao作为Android客户端本地数据库的对象关系映射框架.对于GreenDao虽然以往也有简单用过,但这还是笔者第一次在实际业务中使用.碰到了题目所述的两个问题,虽然在Tu ...

  5. vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用

    VBA中,自定义类型相当于C语言中的结构体,枚举类型也与C语言中的枚举类型相似.自定义类型和枚举类型放到模块的子过程的前面即可. VBA中, 类模块相当于C语言中的类,类模板要单独放到类模块中(自定义 ...

  6. 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性...

    ========================================================= /*创建一个名为list的规则,这条规则表明变量只能取0和1两个值*/ CREATE ...

  7. Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证

    一.自定义类型转换器 1.编写一个类,继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 2.覆盖掉其中的public Obj ...

  8. springmvc二十一:自定义类型转换器

    ConversionService:是一个接口; 它里面有一个Converter(转换器)进行工作 ①实现一个Converter接口,写一个自定义的类型转换器 ②Converter是Conversio ...

  9. Groovy中转换成java,Groovy将字符串类型转换为自定义类型的方法

    将一个字符串转换为自定义类型: 例如Quantity是自定义的一个class,现在想这么调用 Quantity quantity = "100个" as Quantity 或 de ...

最新文章

  1. 深入理解CSS变形transform(3d)
  2. MYSQL中如何查看表结构命令_mysql查看表结构命令
  3. ibatis轻松入门
  4. Scala 语言输出的三种方式
  5. 【Linux】Linux 目录结构
  6. Android 第一个OpenGL ES程序
  7. Android 第十一课 SQlite 数据库存储
  8. jzoj5123-diyiti【统计,容斥】
  9. Lucas定理及组合数取模
  10. mysql 多列union_Mysql联合查询UNION和UNION ALL的使用介绍
  11. 二叉搜索树+快速排序 查到文本中出现频率最多的100个词 【留学生作业】
  12. 【BZOJ-1146】网络管理Network DFS序 + 带修主席树
  13. 旅行商问题(TSP)、车辆路径问题(VRP,MDVRP,VRPTW)模型介绍
  14. FFmpeg —— 屏幕录像机
  15. vant 开始结束日期_在vant中使用时间选择器实现结束时间和开始时间
  16. css 下拉 小箭头
  17. Excel实现行列转换的三种方式
  18. SAP采购定价过程-条件技术介绍
  19. 实训4——RFID刷卡开锁
  20. 网上银行系统1:系统分析

热门文章

  1. 【机器学习】解决中小微企业的信贷决策问题(一)
  2. 【深度学习】Swin-Unet图像分割网络解析(文末提供剪枝仓库)
  3. 【微信小程序企业级开发教程】小程序的配置详解
  4. mybatis mysql rownum_MyBatis怎样实现MySQL动态分页?
  5. 小米运动蓝牙耳机重新配对_运动高颜值蓝牙耳机推荐,开学选购蓝牙耳机必备攻略...
  6. java sql编辑器_Java工程师完整学习路线
  7. 进阶学习(4.1) JVM结构和原理
  8. 网站付费免费推广你更中意哪一个?
  9. php判断手机浏览器,PHP环境下判断客户端是否为手机浏览器
  10. java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...