用springboot写个大数据的例子并解析
以下是一个使用Spring Boot实现的简单大数据例子:
- 数据准备
在本例中,我们将使用一个包含学生信息的CSV文件作为大数据源。CSV文件中包含了学生的姓名、年龄、性别、分数等信息。文件内容如下:
name,age,gender,score
Tom,18,M,90
Lucy,19,F,85
Jack,20,M,95
Lily,18,F,92
Bob,21,M,88
- 引入依赖
在pom.xml文件中加入以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.5.2</version>
</dependency>
- 创建Job
在Spring Boot中,我们可以使用JobBuilderFactory和StepBuilderFactory创建Job和Step。以下是创建Job的代码:
@Configuration
@EnableBatchProcessing
public class JobConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemReader<Student> studentItemReader;
@Autowired
private ItemWriter<Student> studentItemWriter;
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.start(step())
.build();
}
@Bean
public Step step() {
return stepBuilderFactory.get("step")
.<Student, Student>chunk(2)
.reader(studentItemReader)
.writer(studentItemWriter)
.build();
}
}
在这个例子中,我们使用了一个ItemReader读取CSV文件中的学生信息,使用了一个ItemWriter将学生信息写入数据库中。同时,我们使用了chunk来指定每次读取和写入的数据量。
- 创建ItemReader和ItemWriter
在Spring Boot中,我们可以使用FlatFileItemReader和JdbcBatchItemWriter来读取CSV文件和写入数据库。以下是创建ItemReader和ItemWriter的代码:
@Configuration
public class BatchConfig {
@Bean
public FlatFileItemReader<Student> studentItemReader() {
FlatFileItemReader<Student> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("students.csv"));
reader.setLineMapper(new DefaultLineMapper<Student>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[]{"name", "age", "gender", "score"});
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Student>() {{
setTargetType(Student.class);
}});
}});
return reader;
}
@Bean
public JdbcBatchItemWriter<Student> studentItemWriter(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<Student>()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
.sql("INSERT INTO student (name, age, gender, score) VALUES (:name, :age, :gender, :score)")
.dataSource(dataSource)
.build();
}
}
在这个例子中,我们使用了FlatFileItemReader读取CSV文件,并使用了DelimitedLineTokenizer和BeanWrapperFieldSetMapper将每行数据转换为Student对象。同时,我们使用了JdbcBatchItemWriter将Student对象写入数据库。
- 运行Job
最后,我们可以使用Spring Boot的CommandLineRunner来运行Job:
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
JobParameters jobParameters = new JobParametersBuilder()
.addString("time", String.valueOf(System.currentTimeMillis()))
.toJobParameters();
jobLauncher.run(job, jobParameters);
}
}
在这个例子中,我们使用了JobLauncher来启动Job,并使用JobParametersBuilder创建JobParameters。最后,我们可以在控制台中看到Job的执行结果。
总结:
本例中,我们使用了Spring Boot的批处理框架来实现一个简单的大数据例子。通过使用FlatFileItemReader和JdbcBatchItemWriter,我们可以轻松地读取CSV文件并将数据写入数据库中。同时,我们还介绍了如何使用JobBuilderFactory和StepBuilderFactory创建Job和Step。
原文地址: https://www.cveoy.top/t/topic/bbmF 著作权归作者所有。请勿转载和采集!