您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java的Hadoop KeyValueTextInputFormat怎么使用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java的Hadoop KeyValueTextInputFormat怎么使用”吧!
KeyValueTextInputFormat使用案例
1.需求
統(tǒng)計輸入文件中每一行的第一個單詞相同的行數(shù)。
(1) 輸入數(shù)據(jù)
hadoop ni haoxiaoming hive helloworldhadoop ni haoxiaoming hive helloworld
(2) 期望結果數(shù)據(jù)
hadoop 2xiaoming 2
2.需求分析
3.代碼編寫
(1) 編寫Mapper類
public class KVTextMapper extends Mapper<Text, Text, Text, LongWritable>{
// 1 設置value
LongWritable v = new LongWritable(1);
@Override
protected void map(Text key, Text value, Context context)
throws IOException, InterruptedException {
// 2 寫出
context.write(key, v);
}
}
(2) 編寫Reducer類
public class KVTextReducer extends Reducer<Text, LongWritable, Text, LongWritable>{
LongWritable v = new LongWritable();
@Override
protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
long sum = 0L;
// 1 匯總統(tǒng)計
for (LongWritable value : values) {
sum += value.get();
}
v.set(sum);
// 2 輸出
context.write(key, v);
}
}
(3) 編寫Driver類
public class KVTextDriver {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration conf = new Configuration();
// 設置切割符
conf.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR, " ");
// 1 獲取job對象
Job job = Job.getInstance(conf);
// 2 設置jar包位置,關聯(lián)mapper和reducer
job.setJarByClass(KVTextDriver.class);
job.setMapperClass(KVTextMapper.class);
job.setReducerClass(KVTextReducer.class);
// 3 設置map輸出kv類型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
// 4 設置最終輸出kv類型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
// 5 設置輸入輸出數(shù)據(jù)路徑
FileInputFormat.setInputPaths(job, new Path(args[0]));
// 設置輸入格式
job.setInputFormatClass(KeyValueTextInputFormat.class);
// 6 設置輸出數(shù)據(jù)路徑
FileOutputFormat.setOutputPath(job, new Path(args[1]));
// 7 提交job
job.waitForCompletion(true);
}
}
感謝各位的閱讀,以上就是“Java的Hadoop KeyValueTextInputFormat怎么使用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Java的Hadoop KeyValueTextInputFormat怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。