본문 바로가기

programming/Big data2

Spark와 직렬화 - transient lazy val 패턴의 도움받기 INTRO Spark에서 데이터 처리 로직을 main에 다 드러내니 너무 복잡해서, 복잡한 코드는 별도의 클래스에 캡슐화를 하고 싶었다. spark 데이터처리의 특성상 한 dataframe에 연속된 transformation을 적용하는 경우가 많은데, 이 로직을 다른 클래스에서 표현하고 싶은 것이기 때문에 spark Session을 받든 dataframe을 받든 매개변수를 받아야했다. 매개변수를 받아야 하는 경우 class를 만들어야한다. (object로 만들면 싱글톤이기 때문에 문제가 없지만) 매개변수 받고 싶으면 무조건 class인지는 더 검토를 해봐야 한다. class를 만든다는 것은 후에 객체를 생성해야한다는 뜻이고, 이 객체가 직렬화 될 수 있어야함을 의미한다. driver 프로세스로부터 각 e.. 2020. 5. 27.
Kafka Spark Streaming Spark Streaming를 통해 실시간 분석 애플리케이션을 만들 수 있는데, 스트리밍 데이터 소스 중 하나로 Kafka를 사용할 수 있다. 이 포스트에서는 Kafka가 필요한 이유와 Spark Streaming과 연동하는 방법을 알아보고자 한다. Kafka 등장 배경 데이터 파이프라인의 복잡성을 줄이고 원격 통신을 쉽게 할 수 있게 만들어준다. 그림으로 보자면, 아래와 같이 기존에 복잡했던 파이프라인을 이렇게 단순화 시켰다고 생각하면 된다. 데이터를 요청하는 Consumer와 메시지를 보내주는 Producer로 나누어진 구조에서 매개자 클러스터 역할을 하는 것으로 보인다. Kafka 컴포넌트 Broker : 위에서 봤던 그림에서 메세지를 양 쪽에서 잘 주고 받을 수 있도록 하는 책임이 있다. 보통은 .. 2020. 5. 20.