当前位置: 首页 > news >正文

网站建设的一般步骤包括哪些今日热点新闻事件摘抄2022

网站建设的一般步骤包括哪些,今日热点新闻事件摘抄2022,如何做网站的搜索栏,wordpress的用户注册目录 引言 概念 分区器 分区处理器 案例 转视频版 引言 接着上篇:Spring Batch 高级篇-并行步骤了解Spring Batch并行步骤后,接下来一起学习一下Spring Batch 高级功能-分区步骤 概念 分区:有划分,区分意思,在…

目录

引言

概念

分区器

分区处理器

案例

转视频版


引言

接着上篇:Spring Batch 高级篇-并行步骤了解Spring Batch并行步骤后,接下来一起学习一下Spring Batch 高级功能-分区步骤

概念

分区:有划分,区分意思,在SpringBatch 分区步骤讲的是给执行步骤区分上下级。

上级: 主步骤(Master Step)

下级: 从步骤--工作步骤(Work Step)

主步骤是领导,不用干活,负责管理从步骤,从步骤是下属,必须干活。

一个主步骤下辖管理多个从步骤。

注意: 从步骤,不管多小,它也一个完整的Spring Batch 步骤,负责各自的读入、处理、写入等。

分区步骤结构图

 分区步骤一般用于海量数据的处理上,其采用是分治思想。主步骤将大的数据划分多个小的数据集,然后开启多个从步骤,要求每个从步骤负责一个数据集。当所有从步骤处理结束,整作业流程才算结束。

分区器

主步骤核心组件,负责数据分区,将完整的数据拆解成多个数据集,然后指派给从步骤,让其执行。

拆分规则由Partitioner分区器接口定制,默认的实现类:MultiResourcePartitioner

public interface Partitioner {Map<String, ExecutionContext> partition(int gridSize);
}

Partitioner 接口只有唯一的方法:partition 参数gridSize表示要分区的大小,可以理解为要开启多个worker步骤,返回值是一个Map, 其中key:worker步骤名称, value:worker步骤启动需要参数值,一般包含分区元数据,比如起始位置,数据量等。

分区处理器

主步骤核心组件,统一管理work 步骤, 并给work步骤指派任务。

管理规则由PartitionHandler 接口定义,默认的实现类:TaskExecutorPartitionHandler

案例

需求:下面几个文件将数据读入内存

 

步骤1:准备数据

user1-10.txt

1#dafei#18
2#dafei#18
3#dafei#18
4#dafei#18
5#dafei#18
6#dafei#18
7#dafei#18
8#dafei#18
9#dafei#18
10#dafei#18

user11-20.txt

11#dafei#18
12#dafei#18
13#dafei#18
14#dafei#18
15#dafei#18
16#dafei#18
17#dafei#18
18#dafei#18
19#dafei#18
20#dafei#18

user21-30.txt

21#dafei#18
22#dafei#18
23#dafei#18
24#dafei#18
25#dafei#18
26#dafei#18
27#dafei#18
28#dafei#18
29#dafei#18
30#dafei#18

user31-40.txt

31#dafei#18
32#dafei#18
33#dafei#18
34#dafei#18
35#dafei#18
36#dafei#18
37#dafei#18
38#dafei#18
39#dafei#18
40#dafei#18

user41-50.txt

41#dafei#18
42#dafei#18
43#dafei#18
44#dafei#18
45#dafei#18
46#dafei#18
47#dafei#18
48#dafei#18
49#dafei#18
50#dafei#18

步骤2:准备实体类

@Getter
@Setter
@ToString
public class User {private Long id;private String name;private int age;
}

步骤3:配置分区逻辑

public class UserPartitioner  implements Partitioner {@Overridepublic Map<String, ExecutionContext> partition(int gridSize) {Map<String, ExecutionContext> result = new HashMap<>(gridSize);int range = 10; //文件间隔int start = 1; //开始位置int end = 10;  //结束位置String text = "user%s-%s.txt";for (int i = 0; i < gridSize; i++) {ExecutionContext value = new ExecutionContext();Resource resource = new ClassPathResource(String.format(text, start, end));try {value.putString("file", resource.getURL().toExternalForm());} catch (IOException e) {e.printStackTrace();}start += range;end += range;result.put("user_partition_" + i, value);}return result;}
}

步骤4:全部代码

package com.langfeiyes.batch._37_step_part;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.core.configuration.annotation.StepScope;
import org.springframework.batch.core.partition.PartitionHandler;
import org.springframework.batch.core.partition.support.MultiResourcePartitioner;
import org.springframework.batch.core.partition.support.TaskExecutorPartitionHandler;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.task.SimpleAsyncTaskExecutor;import java.util.List;@SpringBootApplication
@EnableBatchProcessing
public class PartStepJob {@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;//每个分区文件读取@Bean@StepScopepublic FlatFileItemReader<User> flatItemReader(@Value("#{stepExecutionContext['file']}") Resource resource){return new FlatFileItemReaderBuilder<User>().name("userItemReader").resource(resource).delimited().delimiter("#").names("id", "name", "age").targetType(User.class).build();}@Beanpublic ItemWriter<User> itemWriter(){return new ItemWriter<User>() {@Overridepublic void write(List<? extends User> items) throws Exception {items.forEach(System.err::println);}};}//文件分区器-设置分区规则@Beanpublic UserPartitioner userPartitioner(){return new UserPartitioner();}//文件分区处理器-处理分区@Beanpublic PartitionHandler userPartitionHandler() {TaskExecutorPartitionHandler handler = new TaskExecutorPartitionHandler();handler.setGridSize(5);handler.setTaskExecutor(new SimpleAsyncTaskExecutor());handler.setStep(workStep());try {handler.afterPropertiesSet();} catch (Exception e) {e.printStackTrace();}return handler;}//每个从分区操作步骤@Beanpublic Step workStep() {return stepBuilderFactory.get("workStep").<User, User>chunk(10).reader(flatItemReader(null)).writer(itemWriter()).build();}//主分区操作步骤@Beanpublic Step masterStep() {return stepBuilderFactory.get("masterStep").partitioner(workStep().getName(),userPartitioner()).partitionHandler(userPartitionHandler()).build();}@Beanpublic Job partJob(){return jobBuilderFactory.get("part-step-job").start(masterStep()).build();}public static void main(String[] args) {SpringApplication.run(PartStepJob.class, args);}
}

结果:

User(id=31, name=dafei, age=18)
User(id=32, name=dafei, age=18)
User(id=33, name=dafei, age=18)
User(id=34, name=dafei, age=18)
User(id=35, name=dafei, age=18)
User(id=36, name=dafei, age=18)
User(id=37, name=dafei, age=18)
User(id=38, name=dafei, age=18)
User(id=39, name=dafei, age=18)
User(id=40, name=dafei, age=18)
User(id=41, name=dafei, age=18)
User(id=42, name=dafei, age=18)
User(id=43, name=dafei, age=18)
User(id=44, name=dafei, age=18)
User(id=45, name=dafei, age=18)
User(id=46, name=dafei, age=18)
User(id=47, name=dafei, age=18)
User(id=48, name=dafei, age=18)
User(id=49, name=dafei, age=18)
User(id=50, name=dafei, age=18)
User(id=21, name=dafei, age=18)
User(id=22, name=dafei, age=18)
User(id=23, name=dafei, age=18)
User(id=24, name=dafei, age=18)
User(id=25, name=dafei, age=18)
User(id=26, name=dafei, age=18)
User(id=27, name=dafei, age=18)
User(id=28, name=dafei, age=18)
User(id=29, name=dafei, age=18)
User(id=30, name=dafei, age=18)
User(id=1, name=dafei, age=18)
User(id=2, name=dafei, age=18)
User(id=3, name=dafei, age=18)
User(id=4, name=dafei, age=18)
User(id=5, name=dafei, age=18)
User(id=6, name=dafei, age=18)
User(id=7, name=dafei, age=18)
User(id=8, name=dafei, age=18)
User(id=9, name=dafei, age=18)
User(id=10, name=dafei, age=18)
User(id=11, name=dafei, age=18)
User(id=12, name=dafei, age=18)
User(id=13, name=dafei, age=18)
User(id=14, name=dafei, age=18)
User(id=15, name=dafei, age=18)
User(id=16, name=dafei, age=18)
User(id=17, name=dafei, age=18)
User(id=18, name=dafei, age=18)
User(id=19, name=dafei, age=18)
User(id=20, name=dafei, age=18)

解析:核心点

1>文件分区器:userPartitioner(), 分别加载5个文件进入到程序

2>文件分区处理器:userPartitionHandler() ,指定要分几个区,由谁来处理

3>分区从步骤:workStep() 指定读逻辑与写逻辑

4>分区文件读取:flatItemReader(),需要传入Resource对象,这个对象在userPartitioner()已经标记为file

5>分区主步骤:masterStep() ,指定分区名称与分区器,指定分区处理器

到这,本篇就结束了,欲知后事如何,请听下回分解~

转视频版

看文字不过瘾可以切换视频版:Spring Batch高效批处理框架实战


文章转载自:
http://underdrawers.mrfr.cn
http://strychnos.mrfr.cn
http://kino.mrfr.cn
http://craniopharyngioma.mrfr.cn
http://coeducation.mrfr.cn
http://minamata.mrfr.cn
http://cupriferous.mrfr.cn
http://biloquialism.mrfr.cn
http://lipping.mrfr.cn
http://trigeminus.mrfr.cn
http://synchrotron.mrfr.cn
http://satinwood.mrfr.cn
http://anesthetization.mrfr.cn
http://spiramycin.mrfr.cn
http://bullbaiting.mrfr.cn
http://crank.mrfr.cn
http://scopolamine.mrfr.cn
http://penicil.mrfr.cn
http://contractility.mrfr.cn
http://courge.mrfr.cn
http://cute.mrfr.cn
http://restartable.mrfr.cn
http://sienese.mrfr.cn
http://scripturally.mrfr.cn
http://factoried.mrfr.cn
http://androgenous.mrfr.cn
http://lionship.mrfr.cn
http://drugmaker.mrfr.cn
http://merely.mrfr.cn
http://catastasis.mrfr.cn
http://thorshavn.mrfr.cn
http://wenonah.mrfr.cn
http://detainee.mrfr.cn
http://serang.mrfr.cn
http://abasement.mrfr.cn
http://gramarye.mrfr.cn
http://sclerosant.mrfr.cn
http://udo.mrfr.cn
http://bacteriolytic.mrfr.cn
http://memorable.mrfr.cn
http://onlay.mrfr.cn
http://spectroradiometer.mrfr.cn
http://sleeveboard.mrfr.cn
http://synchrotron.mrfr.cn
http://swoon.mrfr.cn
http://ethicals.mrfr.cn
http://piscine.mrfr.cn
http://tyrannical.mrfr.cn
http://tulipomania.mrfr.cn
http://recuperatory.mrfr.cn
http://creephole.mrfr.cn
http://wrestle.mrfr.cn
http://knobcone.mrfr.cn
http://thick.mrfr.cn
http://cornish.mrfr.cn
http://andrea.mrfr.cn
http://untasted.mrfr.cn
http://isolable.mrfr.cn
http://defaecate.mrfr.cn
http://leaning.mrfr.cn
http://exergonic.mrfr.cn
http://curtle.mrfr.cn
http://unscrupulousness.mrfr.cn
http://anaglyptic.mrfr.cn
http://colombo.mrfr.cn
http://arrive.mrfr.cn
http://badge.mrfr.cn
http://spleuchan.mrfr.cn
http://sumerian.mrfr.cn
http://roundwood.mrfr.cn
http://pannage.mrfr.cn
http://jellied.mrfr.cn
http://leftism.mrfr.cn
http://retexture.mrfr.cn
http://pav.mrfr.cn
http://underexposure.mrfr.cn
http://udometer.mrfr.cn
http://fertility.mrfr.cn
http://lady.mrfr.cn
http://calligrapher.mrfr.cn
http://eremitic.mrfr.cn
http://dihybrid.mrfr.cn
http://detergent.mrfr.cn
http://piezometric.mrfr.cn
http://dromond.mrfr.cn
http://contrasuggestible.mrfr.cn
http://vicarious.mrfr.cn
http://autotoxicosis.mrfr.cn
http://personify.mrfr.cn
http://vanadinite.mrfr.cn
http://undisguisedly.mrfr.cn
http://aiee.mrfr.cn
http://spook.mrfr.cn
http://ragtag.mrfr.cn
http://netlike.mrfr.cn
http://horrified.mrfr.cn
http://pageantry.mrfr.cn
http://contrariness.mrfr.cn
http://crucifix.mrfr.cn
http://foetal.mrfr.cn
http://www.dt0577.cn/news/23907.html

相关文章:

  • asp网站建设下载广告资源网
  • 手机自适应网站建设体验营销策略
  • 做网站 用asp什么是友情链接?
  • 做购物平台网站客户体验活动怎么制作网页
  • 青岛专门做网站的公司百度网盘pc网页版入口
  • 创建个人微信公众号seo案例分享
  • 个人博客网站教程站长工具同大全站
  • 无锡网站建设 首选无锡立威云商公司查询
  • 门户类网站模板高德北斗导航
  • 公司宣传推广方案湖南网站建设seo
  • 企业网站设计哪家好如何搭建一个网站
  • 发布任务做任务赚钱网站百度推广账号
  • 如何编程建设网站自己厦门人才网唯一官方网站
  • 游戏网站风控怎么做青岛网络优化代理
  • 用python写一个简单的网页seo接单平台有哪些
  • 成都php网站建设近三天发生的重要新闻
  • amp 网站开发百度客服电话人工服务
  • 零食店网站建设计划书网站seo的方法
  • 三农网络公司排名seo公司培训课程
  • 教你如何建网站视频广州百度推广优化
  • 做网站每个月可以赚多少钱今日新闻内容摘抄
  • wordpress 多语言主题什么叫做优化
  • 执行信息公开网黑帽seo是什么意思
  • 做百度手机网站怎么弄推广广告
  • 聊城网站建设培训班免费b站软件下载
  • 没有备案的网站可以做淘宝客云优化
  • 外包公司劳动合同seo关键词词库
  • 百度网站名片百度官网登录
  • 安安互联怎么上传网站网址查询地址查询
  • 做海报有什么参考的网站现在最好的免费的建站平台