hadoop自定义类型注意问题
自定义类型要实现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自定义类型注意问题相关推荐
- Hadoop日记Day13---使用hadoop自定义类型处理手机上网日志
测试数据的下载地址为:http://pan.baidu.com/s/1gdgSn6r 一.文件分析 首先可以用文本编辑器打开一个HTTP_20130313143750.dat的二进制文件,这个文件的内 ...
- Oracle type (自定义类型的使用)
oracle - type type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要 ...
- Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)
1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...
- GreenDao存储自定义类型对象解决方案(转)
最近公司项目选用GreenDao作为Android客户端本地数据库的对象关系映射框架.对于GreenDao虽然以往也有简单用过,但这还是笔者第一次在实际业务中使用.碰到了题目所述的两个问题,虽然在Tu ...
- vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用
VBA中,自定义类型相当于C语言中的结构体,枚举类型也与C语言中的枚举类型相似.自定义类型和枚举类型放到模块的子过程的前面即可. VBA中, 类模块相当于C语言中的类,类模板要单独放到类模块中(自定义 ...
- 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性...
========================================================= /*创建一个名为list的规则,这条规则表明变量只能取0和1两个值*/ CREATE ...
- Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证
一.自定义类型转换器 1.编写一个类,继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 2.覆盖掉其中的public Obj ...
- springmvc二十一:自定义类型转换器
ConversionService:是一个接口; 它里面有一个Converter(转换器)进行工作 ①实现一个Converter接口,写一个自定义的类型转换器 ②Converter是Conversio ...
- Groovy中转换成java,Groovy将字符串类型转换为自定义类型的方法
将一个字符串转换为自定义类型: 例如Quantity是自定义的一个class,现在想这么调用 Quantity quantity = "100个" as Quantity 或 de ...
最新文章
- 深入理解CSS变形transform(3d)
- MYSQL中如何查看表结构命令_mysql查看表结构命令
- ibatis轻松入门
- Scala 语言输出的三种方式
- 【Linux】Linux 目录结构
- Android 第一个OpenGL ES程序
- Android 第十一课 SQlite 数据库存储
- jzoj5123-diyiti【统计,容斥】
- Lucas定理及组合数取模
- mysql 多列union_Mysql联合查询UNION和UNION ALL的使用介绍
- 二叉搜索树+快速排序 查到文本中出现频率最多的100个词 【留学生作业】
- 【BZOJ-1146】网络管理Network DFS序 + 带修主席树
- 旅行商问题(TSP)、车辆路径问题(VRP,MDVRP,VRPTW)模型介绍
- FFmpeg —— 屏幕录像机
- vant 开始结束日期_在vant中使用时间选择器实现结束时间和开始时间
- css 下拉 小箭头
- Excel实现行列转换的三种方式
- SAP采购定价过程-条件技术介绍
- 实训4——RFID刷卡开锁
- 网上银行系统1:系统分析
热门文章
- 【机器学习】解决中小微企业的信贷决策问题(一)
- 【深度学习】Swin-Unet图像分割网络解析(文末提供剪枝仓库)
- 【微信小程序企业级开发教程】小程序的配置详解
- mybatis mysql rownum_MyBatis怎样实现MySQL动态分页?
- 小米运动蓝牙耳机重新配对_运动高颜值蓝牙耳机推荐,开学选购蓝牙耳机必备攻略...
- java sql编辑器_Java工程师完整学习路线
- 进阶学习(4.1) JVM结构和原理
- 网站付费免费推广你更中意哪一个?
- php判断手机浏览器,PHP环境下判断客户端是否为手机浏览器
- java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...