实现spring batch中的ItemProcessor接口,并重写接口中的process方法来实现数据过滤。

示例:从一个list源中读取数据,只过滤出与”A”差值大于10的数据。

1、该作业配置如下:

import java.util.Arrays;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.support.ListItemReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@EnableBatchProcessing
@Configuration
public class BatchConfig {@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Value("${spring.batch.chunk.size:3}")private int chunkSize; //5/*1、创建一个Job作业*/@Beanpublic Job itemProcessJob(){return jobBuilderFactory.get("ItemProcessJob").start(chunkStep()).build();}//2、创建一个step*//*list源中存的数据都是String类型的,所以输入是String类型的;过滤出满足条件的数据转化为小写字符,也是String类型,所以输出也是String类型的*/@Beanpublic Step chunkStep(){return stepBuilderFactory.get("chunkStep").<String, String>chunk(chunkSize)   //<String, String>表示输入是String类型,输出是String类型,不加会报错类型不匹配                           .reader(listReader()).processor(itemProcess()).writer(list -> list.forEach(System.out::println)).allowStartIfComplete(true).build();}//读@Beanpublic ItemReader<String> listReader(){return new ListItemReader<>(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I","J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T"));}//处理@Beanpublic ItemProcessor<String, String> itemProcess(){return new LowerCaseItemProcess();}/*处理程序中,输入的是String类型, 输出的是String类型*/private class LowerCaseItemProcess implements ItemProcessor<String, String>{@Override/*item表示输入的值*/public String process(String item) throws Exception {if (item.compareTo("A") <= 10) {return null;    //返回空}String output = item.toLowerCase(); //把大写字母转化为小写字母return output;      //返回非空结果}}}

运行作业,输出结果如下:

……省略日志
l
m
n
o
p
q
r
s
t

只过滤出了满足条件的数据。

2、如果读取的list数据源中数据改为如下:

//读@Beanpublic ItemReader<String> listReader(){return new ListItemReader<>(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I","J", "K", "L", "M", "N", "O", "P", "Q", null, "R", "S", "T"));}
在"Q"字符的后面是个null,当spring batch读到此处时就会退出,表示读取完毕。Spring batch读取结束的条件就是null。

重新运行作业,输出日志如下:

……省略日志
l
m
n
o
p
q

数据处理——实现数据过滤相关推荐

  1. pandas 空数据处理和数据过滤

    1.pandas数据过滤 import pandas as pd from pandas import DataFrame,Series import numpy as npdict1 = {'age ...

  2. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )

    文章目录 一.Bitmap 图像数据处理 二.Java 层 Bitmap 对象转为 JNI 层 bitmap 对象 三.获取 bitmap 中的图像数据 四.过滤 bitmap 中的图像数据 ( 获取 ...

  3. js数据过滤算法搭建

    需求描述 公司需要搭建一个paas平台兼容所有的硬件,硬件把自己采集到的数据发送到paas平台,paas平台把数据处理之发送到各个服务.很多时候硬件发送的数据量特别大,很多不是我们需要的,这个时候,我 ...

  4. Logstash数据处理服务的过滤插件GeoIP解析IP地址的地理位置

    Logstash数据处理服务的过滤插件GeoIP解析IP地址的地理位置 文章目录 Logstash数据处理服务的过滤插件GeoIP解析IP地址的地理位置 1.GeoIP解析IP地址的地理位置 2.安装 ...

  5. 3-03-1 泰坦尼克号竞赛 - 数据过滤

    3.3 数据清洗与合并 数据预处理包含了数据清洗 (data cleansing) 与特征工程 (feature engineering) ,本节主要介绍的是数据清洗部份,主要目的是将原始数据转换成整 ...

  6. R行数据过滤基于dplyr包filter函数

    R行数据过滤基于dplyr包filter函数 目录 R行数据过滤基于dplyr包filter函数 筛选等于某个值的行 使用与操作筛选行

  7. python与R行列数据过滤(row column filtering):dplyr、 isnull、isna、drop、select、iloc、loc、isin、filter

    python与R行列数据过滤(row column filtering):dplyr. isnull.isna.drop.select.iloc.loc.isin.filter 很多工程师可能刚开始的 ...

  8. Pandas常见的数据过滤方法、通过列条件筛选行数据

    Pandas常见的数据过滤方法.通过列条件筛选行数据 不废话了,直接看代码吧: 一般情况下,前面5种就覆盖了绝大多数需求 import pandas as pd import numpy as npd ...

  9. Aspose Cells 控件如何实现数据过滤(附代码和下载地址)

    Aspose Cells 是一款操作和处理以及转换Excel文件的类库,支持.NET和JAVA版,几乎所有Excel能实现的功能,Aspose Cells都可以实现,在Excel中经常会用到数据过滤, ...

最新文章

  1. 念 2013-8-6 (写于爸爸走之后,之七)
  2. 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
  3. Spring4 MVC表单验证代码示例
  4. Jquery跳出each循环
  5. Android 不显示标题栏和全屏的设置方法
  6. python列表批量 修改_python实现多进程按序号批量修改文件名的方法示例
  7. Python 获取服务器的CPU个数
  8. 关于SQL注入及防御
  9. 正确的座机号码格式_电话号码的正确写法(我就知道你不知道)
  10. Python int()使用小结
  11. 更新禅道踩坑问题及禅道更新步骤
  12. odoo服务器设置说明
  13. Docker Dockerfile 验证Docker内部使用jmap报错问题解决
  14. 【附源码】计算机毕业设计java在线教学系统设计与实现
  15. 电视android内置系统界面,系统界面:原生安卓 定制界面_汽车科技评测-中关村在线...
  16. 汶川大地震随感谢摘录
  17. 阿里云部署项目详细步骤
  18. 制作github.io学术版个人主页
  19. 在linux中,命令 nc -lk 和nc -lp 的区别是什么
  20. python爬虫程序员工资-Python爬虫实战-数据可视化

热门文章

  1. 数据可视化:揭开“智慧校园”新篇章,助力新时代教育信息化
  2. 鼠标悬停(点击)出现文本提示框
  3. 工业级无线路由器端口映射教程
  4. CAD二次开发清除选择集
  5. 西藏大学计算机科学与技术分数线,西藏大学2020年录取分数线是多少
  6. Linux编写c程序计算圆的面积,c语言如何计算圆面积和周长
  7. 安装 XAMPP 进行方便集成开发
  8. 企业搭建小型直播间、中型直播间、大型直播间的介绍
  9. 大数据运营之数据分析
  10. 理解这25个概念,你的人工智能,深度学习,机器学习才算入门!