【MapReduce】 基础案例 ---- 简单数据清洗(计数器)
发布日期:2021-05-07 02:49:40 浏览次数:25 分类:精选文章

本文共 1410 字,大约阅读时间需要 4 分钟。

数据清洗案例实操

需求 去除日志中字段长度小于等于11的日志

输入数据 (图1:示例输入数据)

期望输出数据 每行字段长度都大于11

需求分析 需要在Map阶段对输入的数据根据规则进行过滤清洗

代码实现 Mapper阶段 进行数据解析 解析的同时记录计数

代码示例 public class LogMap extends Mapper< LongWritable, Text, NullWritable > { protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); boolean result = parseLog(line, context); if (!result) { return; } context.write(value, NullWritable.get()); }

private boolean parseLog(String line, Context context) {
String[] fields = line.split(" ");
if (fields.length > 11) {
context.getCounter("map", "true").increment(1);
return true;
} else {
context.getCounter("map", "false").increment(1);
return false;
}
}

}

Driver阶段 正常编写配置项 注意设置ReduceTask数为0

代码示例 public class LogDriver { public static void main(String[] args) { Configuration configuration = new Configuration(); Job job = null; try { job = Job.getInstance(configuration); job.setJarByClass(LogDriver.class); job.setMapperClass(LogMap.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class); job.setNumReduceTasks(0); FileInputFormat.setInputPaths(job, new Path("G:\Projects...")); FileOutputFormat.setOutputPath(job, new Path("G:\Projects...")); boolean result = job.waitForCompletion(true); System.exit(result ? 0 : 1); } catch (Exception e) { e.printStackTrace(); } } }

上一篇:【数据结构与算法】稀疏数组 sparsearray
下一篇:【sklearn练习】KMeans ---- Seeds(小麦种子)数据集聚类评估

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月12日 20时36分17秒