ETL (3)

์žญ์žญ์ดยท2021๋…„ 5์›” 11์ผ
1

ETL

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail

ETL (3)

๐ŸŽ Contents

0. Summary

์•ž์—์„œ ETL ๊ธฐ๋ณธ ์„ค์ •๊ณผ Spring batch Job์„ ์•Œ์•„๋ณด์•˜๋‹ค.

Scheduler๋ฅผ ํ†ตํ•ด Job์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰์‹œํ‚ฌ ๊ฒƒ์ด๋‹ค.
๋ณด๋‹ค ์ž์„ธํ•œ Scheduler์ •๋ณด๋Š” ์—ฌ๊ธฐ์— ํฌ์ŠคํŒ…ํ•ด๋†“์•˜๋‹ค.

1. Using Job Parameter

Spring batch์—์„œ ํŠน์ • Job์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” Job Parameter๋ฅผ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.
Job Parameter๋Š” @JobScope๋‚˜ @StepScope์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.
@JobScope: Step๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.
@StepScope: tasklet์ด๋‚˜ ItemReader, ItemProcessor, ItemWriter์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ๋Š” Job Parameter๋กœ requestDate๋ฅผ ๋ฐ›์•„ ItemProcessor์—์„œ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

@Bean
  @StepScope
  public ItemProcessor<Product, TransProduct> processor(@Value("#{jobParameters[requestDate]}") String requestDate) {
    return product -> {
      String name = product.getName();
      Long price = product.getPrice();
      LocalDateTime created = product.getCreated();
      System.out.println(requestDate);
      if( price > 2500 ) {
        return new TransProduct(name, price - 500L, created, true);
      } else {
        return new TransProduct(name, price, created, false);
      }
    };
  }

2. Execute

etlJob์„ ์‹คํ–‰ํ•˜๊ณ  Job Parameter์ธ requestDate์— ๊ฐ’์„ ํ• ๋‹นํ•ด์ค€๋‹ค.

./gradlew build -x test

java -jar ./build/libs/*.jar --job.name=etlJob requestDate=20210511

3. Using Scheduler

์ด์ œ 2. Execute์—์„œ ๋งŒ๋“  jar๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ์ž.
๋ณธ ๋ฌธ์„œ์—์„œ๋Š” Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ Scheduling์„ ํ•  ๊ฒƒ์ด๋‹ค.
์ด ๊ณณ์— Jenkins ์…‹ํŒ…์„ ๋ช…์‹œํ•ด ๋†“์•˜๋‹ค.

์—ฌ๊ธฐ์„œ jar๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์— Job Parameter๋ฅผ ๊ฐ™์ด ๋„˜๊ฒจ์ฃผ๋ฉด ์ž‘์—…์™„๋ฃŒ์ด ์™„๋ฃŒ๋œ๋‹ค.

# requestDate๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋„˜๊ฒจ์ค€๋‹ค.
java -jar $PWD/demo-0.0.1-SNAPSHOT.jar --job.name=etlJob requestDate=$(date | tr -d " ")

4. Check

Build History์—์„œ 1๋ถ„๋งˆ๋‹ค Batch๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


๋ชจ๋“  ์†Œ์Šค๋Š” Github์— ์˜ฌ๋ ค๋†“์•˜๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€