1 技术栈: javase, flinkx平台, hive, kafka, maven, mysql
2 文件类型: 分为csv格式,xml格式和普通的文本格式文件; 按照业务类型可分为两百多种类型文件
(如: inc*99s, inc*51s, ofc*51c, rd1001, rd1002,rd1027, ncm文件, 资金划付文件, Authlog大文件(2G)等)
3 实现解析过程: 引入flinkx包, 实现flinkx提供的接口, 并实现
void open(String fiileName, String filePath, InputStream in);// 一些初始化参数
boolean hasNext(); // 判断是否有下一行
String[] lineData(); // 循环io流文件内容,每读取一行数据则解析一行数据成对应的字段,并返回解析结果
void close() // 关闭资源
通过实现上面四个接口方法进行解析并返回数据;
流程: flinkx平台会配置很多定时任务,每一个定时任务配置一个job,这个job可以指定对应的文件名称及路径正则,然后获取到文件后,将文件io流
调用java程序的那4个方法,去执行。 当调用open方法时,会先使用serviceload机制通过文件名正则去判断并获取到对应的解析类。
每一种类型文件都有一个唯一的文件名正则。每一种类型格式的文件都会配置对应的字段和截取字段的长度或者分隔符到配置文件中,以及文件编码。
写了很多通用的解析类,还有一些单独处理的解析类。