inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

2장. 작전2: 분산 서버 로그 처형 작전 (시스템에 의존적인) SystemCommandTasklet 관련 질문

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

안녕하십니까 형님! 2강 작전2 : 분산 서버 로그 처형 작전 관련해서, 실무적으로 어떠한 방향으로 접근하는 것이 좋을지 의문이 생겨서 질문 드려봅니다! 제가 윈도우 환경에서 실행하다보니, 자료에 기술된 cli를 윈도우 환경으로 바꾸는데 많은 비용을 소모하였습다. 특히 이번 내용의 경우, 단순 개행문자 및 OS간 인식문제를 넘어서, 명령어를 아예 윈도우 환경에 맞게 변경을 해야한다는 점에서 다소 힘이 많이 들었던 것 같습니다. 뿐만 아니라, 윈도우 cmd 환경에서의 실행을 고려해서 cmd -c의 명령어를 추가해준다든지, 리눅스의 mkdir -p가 먹히지 않으므로 mkdir를 &&로 이어서 실행하게끔 한다든지..(이러다보니 collected_logs 폴더도 최초부터 존재하지 않아야 정상 실행이 가능한 환경적 제약사항까지 고려해야 하였습니다) 전체적으로 환경의 차이를 많이 느끼고 그만큼의 비용도 일전보다는 훨씬 많이 소모된 느낌이 있었던 내용이었습니다. //-p 옵션은 윈도우에서 안먹힘..따라서 collected_logs라는 디렉토리 생성(mkdir)은 처음부터 존재하지 않아야 한다. //SystemCommandTasklet -> 반드시 cli 명령어 작성 필요 @Bean @StepScope public SystemCommadTasklet mkdirTasklet( @Value("#{jobParameters['date']}") String date) throws IOException { SystemCommandTasklet tasklet = new SystemCommandTasklet(); // //tasklet.setWorkingDirectory(System.getProperty("user.home")); //실행환경은 batch 명령어 작성환경에 상관없이 무조건 cmd //경로직접주임은 반드시 백슬래쉬 tasklet.setWorkingDirectory("C:\\Users\\gyrbs\\OneDrive\\Desktop"); String collectedLogsPath = "collected_logs\\" + date; String processedLogsPath = "processed_logs\\" + date; //String collectedLogsPath = String.format("collected_logs\\%s", date); //String processedLogsPath = String.format("processed_logs\\%s", date); String command = String.format("mkdir %s && mkdir %s", collectedLogsPath, processedLogsPath); // //tasklet.setCommand("mkdir", "-p", collectedLogsPath, processedLogsPath); //tasklet.setCommand("cmd", "/c", "mkdir", collectedLogsPath); tasklet.setCommand("cmd", "/c", command); tasklet.setTimeout(3000); // 3초 타임아웃 return tasklet; } @Bean @StepScope public SystemCommandTasklet scpTasklet( @Value("#{jobParameters['date']}") String date) { SystemCommandTasklet tasklet = new SystemCommandTasklet(); //tasklet.setWorkingDirectory(System.getProperty("user.home")); String rootDirectory = "C:\\Users\\gyrbs\\OneDrive\\Desktop"; tasklet.setWorkingDirectory(rootDirectory); String collectedLogsPath = String.format("collected_logs\\%s", date); StringJoiner commandBuilder = new StringJoiner(" && "); for (String host : List.of("localhost", "loan", "pay")) { //String command = String.format("scp %s:~\\logs\\%s.log .%s\\%s.log", // host, date, processedLogsPath, host); String src = String.format("logs\\%s.log", date); String dest = String.format("%s\\%s.log", collectedLogsPath, host); commandBuilder.add(String.format("copy %s %s", src, dest)); } //String src = String.format("logs\\%s.log", date); //String dest = String.format("%s\\%s.log", collectedLogsPath, "localhost"); tasklet.setCommand("cmd", "/c", commandBuilder.toString()); tasklet.setTimeout(10000); //10초 타임아웃 return tasklet; } 이런 느낀점이 많다보니, 이번 내용을 진행하면서, SystemCommandTasklet을 실무적으로 어떻게 활용하면 좋을지 의문점이 생겼습니다. 첫번째는, 단순히 배치를 실행하는 환경이 리눅스라면, 리눅스 환경은 어차피 한동안 안고쳐질거니까, 윈도우라면 그것대로 윈도우 배치 환경은 거의 변경이 없겠지?라는 생각으로 단순히 SystemCommandTasklet으로 구성해야겠네!라고 생각하는게 맞는지 일단 의문이 들었습니다. 배치라는게 이러한 환경적 독립성을 유지하지 않고, 배치실행환경에 맞게 일단 구성하는게 맞을까요? 물론 이 내용이 SystemCommandTasklet을 배우는데 중점이 있을 수 있겠지만, 이번에 꽤 많은 소모를 느껴서 질문드리게 되었습니다! 두번째로, SystemCommandTasklet이 아닌 Tasklet을 사용하여 아래와 같이 시스템에 의존하지 않고 모든 시스템에 적용이 가능한 Java API버전으로 구성하였는데, 빌드 성공하긴 했습니다. //-p 옵션은 윈도우에서 안먹힘..따라서 collected_logs라는 디렉토리 생성(mkdir)은 처음부터 존재하지 않아야 한다. //tasklet -> return (con, ch) @Bean @StepScope public Tasklet mkdirTasklet( @Value("#{jobParameters['date']}") String date) throws IOException { return ((contribution, chunkContext) -> { Path desktop = Paths.get("C:\\Users\\gyrbs\\OneDrive\\Desktop"); Path collected = desktop.resolve("collected_logs").resolve(date); Path processed = desktop.resolve("processed_logs").resolve(date); Files.createDirectories(collected); Files.createDirectories(processed); return RepeatStatus.FINISHED; }); } 이렇게 처음부터 시스템에 상관없는(상관없이 구동이 가능한) 로직을 구현하는게 유지보수적으로도 맞지 않을까..하는 생각이 들었습니다. 형님께서는 실무적으로 이를 적용할때 어떠한 방향으로 구성하시는지, 제가 지금 의문이 드는게 맞는것인지.. 궁금해서 질문드려봅니다!(아니면 만약 SystemCommandTasklet과 같이 시스템에 의존적인 구현이 필요하다면, 이 경우는 환경적으로 바뀔 가능성이 현저히 적다던가..이러한 특수적인 상황적 조건이 있을때 사용하실까요?) 제약사항이 생각보다 커져서 배꼽이 더 커지는 상황이었기에, 형님께 여쭤보고자 하였습니다! 감사합니다!

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
Hyo Kyun Lee 댓글 2 좋아요 1 조회수 105

f_oneway를 무조건 사용해야 하는 경우가 있을까요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 저는 ols와 anova_lm으로 일원분산분석을 하는데 f_oneway를 사용하는 예제가 있었던 걸로 기억합니다. 혹시 f_oneway를 사용해야만 하는 경우가 있는지 문의 드립니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
mongee 댓글 2 좋아요 0 조회수 113

문제3 368.5가 나오는 이유

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

사실 질문은 아닙니다 ㅎㅎ 저도 처음에 왜 자꾸 368.5가 나오나했는데, 주어진 전체 데이터셋이 아니라 문제 2번에서 80프로의 데이터셋으로 문제 3번을 풀면 368.5가 나오고, 제대로 전체 데이터셋으로 풀면 473.5가 잘 나오네요 ㅎㅎㅎ

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
오오렐레 댓글 1 좋아요 0 조회수 60

작업3 코딩

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

어떤 문제는 from sicipy.stats import chisquare chisquare(ob,ex)로 풀었던데,,, 밑에처럼 ,, 그냥 다른 단일표본검정 불러올때처럼 from scipy import stats만 즉, 다음과 같이 from scipy import stats stats.chisquare(ob,ex) from scipy import stats stats.chi2_contingency(ob) chi2 까지 저렇게 써도되는거 맞을까요? 감사합니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
합격 댓글 2 좋아요 0 조회수 60

오류 이해안됌

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

(사진)

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
ska2994 댓글 2 좋아요 0 조회수 63

백준 1940 주몽의 명령 시간복잡도

미해결

Do it! 알고리즘 코딩테스트 with JAVA

해당 문제 시간복잡도 O(NlogN)이 맞나요? sort 함수 이용 O(NlogN) 투포인터 탐색 O(N) 이니까요

  • java
  • 코딩-테스트
  • 알고리즘
이진호남선 댓글 0 좋아요 0 조회수 80

이렇게 풀어도 괜찮을까요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

이렇게 하나요..? 이정도 차이나도 40점 받을 ㅜㅅ 있을가요??..r교차검증을 안 하고 (Advanced)안 했는데ㅜㅜ

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
김서현 댓글 2 좋아요 0 조회수 72

기출10회 작업형3 2-1

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

기출10회 작업형3 2-1 문제에서 (모든 독립변수를 포함한 회귀모형을 적합하시오. 이때 절편을 제외한 회귀계수의 합을 구하시오.) 라는 문제가 있는데, summary로 표현된 회귀계수를 합하면 0.253 의 값이 나오는데, 실제 함수를 사용한 회귀계수의 합은 0.254 가 나와서 0.001의 오차 가 발생하는데 이 경우에도 summary로 계산한 값을 적어 제출해도 오답으로 되지 않는지 궁금합니다!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
이준기 댓글 2 좋아요 0 조회수 55

보험가입확률

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

기출3회차 작업형2에서 평가지표가 안내되지 않았는데 그냥 보험가입"확률"이라서 roc_auc로 평가하고 분류로 보는건가요? 감사합니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
합격 댓글 2 좋아요 0 조회수 45

체험환경에서 답안제출하려고 나가면 코드가 다 사라져요

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

체험환경에서, 답안제출하려고 문제풀이 창을 나갔다가 다시 들어오면 만들어놨던 코드들이 다 없어져 있어요.. 저장버튼도 안되는것 같은데 코드들 사라지는 것없이 창을 이동할 수 있는 방법이 없을ㄲㅏ요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
jungjayean 댓글 2 좋아요 0 조회수 58

작업형2

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

import pandas as pd a = pd.read_csv("train.csv") b = pd.read_csv('test.csv') pd.DataFrame(변수).to_csv('000000000.csv') 작업형2에서 주어진 코드가 이거일떄, a= b=를 그냥 제가 원래 적혀있던 부분에서 a=을 train=으로 b=을 test=로 바꿔도 되는건가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
합격 댓글 2 좋아요 0 조회수 43

lgb로 예측할 때 Unnamed:0이 있어 안 됐는데 해당컬럼을 삭제하고 진행했습니다 괜찮을까요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
김서현 댓글 2 좋아요 0 조회수 57

pred로 제출않고 pred[:,1] 이렇게 제출해도 되나요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

그리고 예측도 pred[:,1]이렇게 했는데 맞을까요? 이런식으로 나왔습니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
김서현 댓글 2 좋아요 0 조회수 61

실행결과에서 복사하고싶을때 ctrl + C

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

실행결과 창에 있는 걸 복사하고 싶을때.. 원래 ctrl + C 단축키가 안되는지..궁금합니다!

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
jungjayean 댓글 1 좋아요 0 조회수 32

이 에러는 뭔가요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
김서현 댓글 2 좋아요 0 조회수 46

답이 다른 것 같아요

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

496개인건 동일한데, pred 값이 좀 다른 것 같아요..

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
xacodud 댓글 2 좋아요 0 조회수 38

실제 시험환경에서 작업형1 답안 제출 시 6문제의 답을 한번에 작성해야되나요?

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형1이나 작업형3의 답안 제출 화면이 별도로 있는데 여기에 모든 문제의 답을 한번에 작성해서 제출해야 되나요? 아니면 1개씩 제출해도 누적이 될까요? (메모장도 공유가 안된다고 해서 소수점까지 있으면 한번에 외울 수 있을까 걱정입니다. 😅 ) 1) 문제 1~6 답안을 한번에 작성해서 제출 2) 문제1 답안만 작성 후 제출 -> 문제2 답안만 작성 후 제출 -> ... -> 문제6 답안만 작성 후 제출

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
my1over 댓글 2 좋아요 0 조회수 99

우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?

미해결

Airflow 마스터 클래스

위와 같이 설치된 배포판이 없어서 list 검색하니 여러 배포판 리스트가 나오는데요~ 지금시점에서 어떤 버전을 설치해야할지 말씀해주시면 좋을 거 같습니다~~!

  • python
  • 데이터-엔지니어링
  • airflow
  • 카카오공채-개발
Rootree 댓글 1 좋아요 0 조회수 77

Chapter05-04 : sum_func의 합이 이중 출력됩니다.

미해결

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

안녕하세요. 강사님. Chapter05-04 : sum_func의 합이 이중 출력됩니다.(합 1500이 두 번 출력) def perf_clock(func): # func가 free vatiable def perf_clocked(*args): # 함수 시작 시간 st = time.perf_counter() # 함수 실행 result = func(*args) # 함수 종료 시간 et = time.perf_counter() - st # 실행 함수명 name = func.__name__ # 함수 매개변수 arg_str = ', '.join(repr(arg) for arg in args) # 결과 출력 print('[%0.5fs] %s(%s) -> %r' % (et, name, arg_str, result)) return result return perf_clocked ---------------------------------------- Called None Decorator -> sum_func [0.00001s] sum_func(100, 200, 300, 400, 500) -> 1500 1500 아무리 봐도 이유를 모르겠습니다. 제가 작성한 코드 지우고 강사님이 제공한 코드로 실행해도 동일합니다.

  • python
  • django
Zetta Kim 댓글 2 좋아요 0 조회수 105

작업형1 연습문제 섹션9

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

연습문제 섹션9 문제 ‘views’ 컬럼 값이 1000 이하인 데이터(결측치 제외)를 찾으시오. 앞에서 구한 데이터 중 ‘f4’ 컬럼의 최빈값을 구하시오. 에서 결측치 제외가 있어서 이렇게 작성하였는데 풀이에는 결측치 제거 과정이 없어서요.. 답은 동일하지만 결측치 제거를 하지 않아도 괜찮은가요? (제거 전 views 컬럼 결측치는 4개가 나옵니다.) # print(df.isnull().sum()) cond1 = df['views'] <= 1000 cond2 = df['views'].isnull() df = df[cond1 & ~cond2] # print(df.isnull().sum()) df['f4'].mode()[0] # df['f4'].value_counts() # ISFJ

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
fndwl 댓글 2 좋아요 0 조회수 46

인기 태그

인프런 TOP Writers

주간 인기글