easy-batch 学习试用
easy-rules 是一个简单,但是封装比较完备的java etl 框架,提供了比较完备的数据处理能力
是一个可以使用的数据处理框架,以下是一个简单的学习
项目说明
项目是官方的一个demo,主要是学习下easy-rules 的基本使用,主要是转换一个csv文件为xml
项目准备
- 项目结构
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── dalong
│ │ │ ├── Application.java
│ │ │ └── Tweet.java
│ │ └── resources
│ │ └── tweets.csv
│ └── test
│ └── java
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dalongapp</groupId>
<artifactId>easy-batch-app</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-batch-core</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-batch-flatfile</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>org.jeasy</groupId>
<artifactId>easy-batch-xml</artifactId>
<version>6.0.0</version>
</dependency>
</dependencies>
</project>
- 代码说明
easy-batch的使用还是比较清晰简单的,我们只需要关注业务逻辑代码,复杂的都交给easy-batch处理
Application.java
package com.dalong;
import org.jeasy.batch.core.filter.HeaderRecordFilter;
import org.jeasy.batch.core.job.Job;
import org.jeasy.batch.core.job.JobBuilder;
import org.jeasy.batch.core.job.JobExecutor;
import org.jeasy.batch.core.job.JobReport;
import org.jeasy.batch.core.writer.FileRecordWriter;
import org.jeasy.batch.flatfile.DelimitedRecordMapper;
import org.jeasy.batch.flatfile.FlatFileRecordReader;
import org.jeasy.batch.xml.XmlRecordMarshaller;
import javax.xml.bind.JAXBException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
public class Application {
public static void main(String[] args) throws JAXBException {
Path inputFile = Paths.get(Application.class.getClassLoader().getResource("tweets.csv").getFile());
Path outputFile = Paths.get("tweets.xml");
Job job = new JobBuilder()
.reader(new FlatFileRecordReader(inputFile))
.filter(new HeaderRecordFilter())
.mapper(new DelimitedRecordMapper(Tweet.class, "id", "user", "message"))
.marshaller(new XmlRecordMarshaller(Tweet.class))
.writer(new FileRecordWriter(outputFile))
.batchSize(10)
.build();
JobExecutor jobExecutor = new JobExecutor();
JobReport report = jobExecutor.execute(job);
System.out.println(report.toString());
jobExecutor.shutdown();
}
}
Tweet.java
package com.dalong;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "tweets")
public class Tweet {
private int id;
public int getId() {
return id;
}
@Override
public String toString() {
return "Tweet{" +
"id=" + id +
", user='" + user + '\'' +
", message='" + message + '\'' +
'}';
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private String user;
private String message;
}
csv 文件
tweets.csv
id,user,message
1,foo,hello
2,bar,@foo hi!
运行效果
- 运行
启动main - 效果
easy-batch参考运行
参考资料
https://github.com/j-easy/easy-batch
https://github.com/j-easy/easy-batch/wiki
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-04-18 edgedb 内部pg 数据存储的探索 (一)基本环境搭建
2019-04-18 Podman and Buildah for Docker users
2019-04-18 集成direnv 与docker-compose 进行环境变量管理
2019-04-18 orientdb docker-compose 运行
2019-04-18 direnv 一个强大的环境变量管理工具
2019-04-18 修复因为存储空间问题引起的nexus 服务启动异常
2019-04-18 How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server