您的位置:首页 > 运维架构

使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象

2015-07-04 16:02 1406 查看
hadoop的bin文件夹以下一个rcc命令,网上介绍非常少。看了一下源代码。发现能够用来生成java和c++的hadoopRecord类代码,比起自己直接实现writable接口。简单非常多并且不easy出错,最好还是试一下。详细方法例如以下:
>rcc
Usage:rcc--language[java|c++]ddl-files
1新建ddl文件
>vimstud.ddl
modulecom.xschao.bean{
classStud{
ustringname;
longid;
intage;
ustringtime;
}
}
其它的类型补充,详细是啥自行脑补:
"\"byte\"",
"\"boolean\"",
"\"int\"",
"\"long\"",
"\"float\"",
"\"double\"",
"\"ustring\"",
"\"buffer\"",
"\"vector\"",
"\"map\"",
2运行编译命令
>rcc--languagejavastud.ddl
查看生成的文件:
>tree
.
|--com
|`--xschao
|`--bean
|`--Stud.java
|--command_example.sh
`--stud.ddl
3directories,3files
Stud.java即为生成的java代码
//Filegeneratedbyhadooprecordcompiler.Donotedit.
packagecom.xschao.bean;
publicclassStudextendsorg.apache.hadoop.record.Record{
privatestaticfinalorg.apache.hadoop.record.meta.RecordTypeInfo_rio_recTypeInfo;
privatestaticorg.apache.hadoop.record.meta.RecordTypeInfo_rio_rtiFilter;
privatestaticint[]_rio_rtiFilterFields;
static{
_rio_recTypeInfo=neworg.apache.hadoop.record.meta.RecordTypeInfo("Stud");
_rio_recTypeInfo.addField("name",org.apache.hadoop.record.meta.TypeID.StringTypeID);
_rio_recTypeInfo.addField("id",org.apache.hadoop.record.meta.TypeID.LongTypeID);
_rio_recTypeInfo.addField("age",org.apache.hadoop.record.meta.TypeID.IntTypeID);
_rio_recTypeInfo.addField("time",org.apache.hadoop.record.meta.TypeID.StringTypeID);
}
privateStringname;
privatelongid;
privateintage;
privateStringtime;
publicStud(){}
publicStud(
finalStringname,
finallongid,
finalintage,
finalStringtime){
this.name=name;
this.id=id;
this.age=age;
this.time=time;
}
。。。。。。。。。。。。。。。。。。。。。[/code]ok格格巫婆--蓝精灵-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: