MapReduce---网约车撤销订单数据清洗

数据及需求解析

数据


数据一示例

shouyue,430100,B190306162112070000,20190306162112,20190306162223,1,1,用户取消
companyid,address,orderid,ordertime,canceltime,operator,canceltypecode,cancelreason 
1200DDCX3307,430104,17625076885092,20190307173227,20190307173833,2,5,null
1200DDCX3307,430406,17624999825776,20190306164901,20190306164947,1,4,null
1100YDYC423D,430602,6665578474529331090,20190307172846,20190307172909,1,1,第三方接口取消
3301YXKJ223E,430700,17146323201919,20190307083000,20190307073855,3,3,
1100YDYC423D,430602,6665578474529331090,20190307172846,20190307172909,1,1,第三方接口取消
3301YXKJ223E,430700,,20190307083000,20190307073855,3,3,
shouyue,430100,P190307171256186000,20190307171255,20190307171348,1,1,点击下单120S内没有筛选到司机时, 乘客手动点击取消订单

字段解析

companyid,address,orderid,ordertime,canceltime,operator,canceltypecode,cancelreason         

数据二示例

340103,安徽省合肥市庐阳区
431027,湖南省郴州市桂东县
210302,辽宁省鞍山市铁东区
440605,广东省佛山市南海区

字段解析

行政区划代码,行政区

需求及解析


  1. 判断一行数据字段是否完整,本数据字段之间通过,分割,数据分割后长度为 8 ,如果分割后字符列表长度小于 8
    或有不完整字段(字段值为空),则清洗掉这一行数据。
  2. 去重清洗:若有相同订单 id(orderid)只保留第一行,其他的清洗掉;
  3. 撤销理由(cancelreason)有大量的字符串 null,请将这些字符串用”未知”替代;
  4. 将数据集中的订单时间(ordertime)、订单撤销时间(canceltime)转换为 “yyyy-MM-dd
    HH:mm:ss”格式,同时只保留订单时间(ordertime)和订单撤销时间(canceltime)在 2019 年 03 月 07
    日的数据,其他日期或者不匹配的数据清洗掉(字段名数据);
  5. 处理数据集中的行政区划代码(address),将其转换成对应的地区名称,在行政区划代码(address)字段后插入,若数据中行政区划代码在数据库没有找到对应的行政区名称,则将行政区名设置为“未知”;

代码实现

自定义数据类型


import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

public class Data implements WritableComparable<Data> {
   
    private String companyid;
    private String address;
    private String orderid;
    private String ordertime;
    private String canceltime;
    private String operator;
    private String canceltypecode;
    private String cancelreason;

    @Override
    public int compareTo(Data o) {
   
        return 0;
    }

    @Override
    public void write(DataOutput dataOutput) throws IOException {
   
        dataOutput.writeUTF(companyid);
        dataOutput.writeUTF(address);
        dataOutput.writeUTF(orderid);
        dataOutput.writeUTF(ordertime);
        dataOutput.writeUTF(canceltime);
        dataOutput.writeUTF(operator);
        dataOutput.writeUTF(canceltypecode);
        dataOutput.writeUTF(cancelreason);
    }

    @Override
    public void readFields(DataInput dataInput) throws</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值