리그캣의 개발놀이터

[빅데이터 인프라] StreamSets Basic tutorial 시작하기(Jython) - 5 본문

프로그래밍 기본/서버 구축 및 관리

[빅데이터 인프라] StreamSets Basic tutorial 시작하기(Jython) - 5

리그캣 2019. 2. 27. 17:57


이번 포스팅에서는 Jython을 사용하여 


origin에서 받은 data를 변경해 보도록 하겠습니다.


Jython이라면 streamsets datacollector 자체가 java로 만들어지다 보니


python언어로 변환한 거라고 생각하시면되어요.


일단, jython관련 모듈을설치해야 하는데 


canvas에 추가하기 위해서는 다음과 같은 과정을 거쳐야 합니다.



우측 상단에보면 선물포장 같은 화면이 있어요 


이화면은 새로운 모듈을 설치할수있는 기능이라고 생각하면되어요


다음과 같은 화면이 나오는데 jy라고 쓰면 jython 모듈을 설치가능한 화면이 나옵니다.




install을 한 후


datacollector를 재실행하면 된다.



나는 docker로 설치했기에 맨아래를 선택했지만 본인 환경에 맞게 재실행가능하다.



그렇게 되면 위의 사진과 같이 jython evaluator를 추가할 수 있다.




jython -> batch by batch


기존 script를 삭제하고 다음을 붙여넣어준다.

실행이 안되면 들여쓰기 문제일 수 있다.



try:
  for record in records:
    cc = record.value['credit_card']
    if cc == '':
      error.write(record, "Payment type was CRD, but credit card was null")
      continue

cc_type = ''
    if cc.startswith('4'):
      cc_type = 'Visa'
    elif cc.startswith(('51','52','53','54','55')):
      cc_type = 'MasterCard'
    elif cc.startswith(('34','37')):
      cc_type = 'AMEX'
    elif cc.startswith(('300','301','302','303','304','305','36','38')):
      cc_type = 'Diners Club'
    elif cc.startswith(('6011','65')):
      cc_type = 'Discover'
    elif cc.startswith(('2131','1800','35')):
      cc_type = 'JCB'
    else:
      cc_type = 'Other'

record.value['credit_card_type'] = cc_type

output.write(record)
except Exception as e:
  error.write(record, e.message)


소스코드에 대해 간략히 설명하자면 credic_card 번호에 맞게 visa 카드인지 카드종류를 새로운 열? 스키마를 만드는 작업이다.



위와같이 추가하고 'preview'를 실행하면 새로운 열이보일것이다.





Comments