2019-9-1 [Map] 过滤掉空行数据

在这里插入图片描述
查看io录入格式:

System.out.println(Arrays.toString(strs));

在这里插入图片描述

if (null != strs && strs.length > 0 && Arrays.toString(strs).length() > 2) {
				//正确数据
				context.getCounter("数据行信息", "有效行数").increment(1);
				for (String s : strs) {
					outkey.set(s);
					//coutext.write -->buffer -->小文件 -->大文件
					context.write(outkey, outval);
				}
			}else {
				context.getCounter("数据行信息", "无效行数").increment(1);
			}

2.去除[],并过滤长度大于0的

if(null != strs && strs.length > 0 && Arrays.toString(strs).replace("[", "").replace("]", "").length() > 0){
				// 正确数据
				context.getCounter("数据行信息","有效行数").increment(1);
				for (String s : strs) {
					outkey.set(s);
					// context.write --> buffer --> 小文件 --> 大文件合并
					context.write(outkey, outval);
				}
			}else{
				context.getCounter("数据行信息", "无效行数").increment(1);
			}

完整map源码:

//定义自己的map类M类
	private static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
	
		//定义需要用到的变量
		private Text outkey = new Text();
		private IntWritable outval = new IntWritable(1);
		private String tmp = null;
		private String[] strs = null;
		@Override
		protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
				throws IOException, InterruptedException {
			//字符转吗
			tmp = new String(value.getBytes(),0,value.getLength(),"GBK");
			strs = tmp.split("\t");
			//记录counter
			context.getCounter("数据行信息","总行数").increment(1);
			//业务判断
			System.out.println(Arrays.toString(strs));
			if (null != strs && strs.length > 0 && Arrays.toString(strs).length() > 2) {
            //if(null != strs && strs.length > 0 && Arrays.toString(strs).replace("[", "").replace("]", "").length() > 0){
                
				//正确数据
				context.getCounter("数据行信息", "有效行数").increment(1);
				for (String s : strs) {
					outkey.set(s);
					//coutext.write -->buffer -->小文件 -->大文件
					context.write(outkey, outval);
				}
			}else {
				context.getCounter("数据行信息", "无效行数").increment(1);
			}
		}
		
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值