[Java] First-class Object, 일급 객체
📌 일급 객체란? First-class Object , 일급 객체는 사실 자바에서만 사용되는 표현은 아니다. 일급 객체란 다른 객체들에 대해 일반적으로 적용 가능한 모든 연산을 지원하는 객체를 말하며, 보통 함수형 프로그래밍의 핵심 개념으로 여겨진다. 대표적으로 JavaScript, Python이 일급 객체 언어이며, C, C++ 등은 그렇지 않다....
📌 일급 객체란? First-class Object , 일급 객체는 사실 자바에서만 사용되는 표현은 아니다. 일급 객체란 다른 객체들에 대해 일반적으로 적용 가능한 모든 연산을 지원하는 객체를 말하며, 보통 함수형 프로그래밍의 핵심 개념으로 여겨진다. 대표적으로 JavaScript, Python이 일급 객체 언어이며, C, C++ 등은 그렇지 않다....
📌 Apache Kafka란? Apache Kafka 는 실시간으로 발생하는 대규모 이벤트 스트림을 효율적으로 처리하기 위해 설계된 분산 이벤트 스트리밍 플랫폼이다. Pub/Sub 모델을 따른다. Producer 는 데이터를 생산하고 Consumer 는 데이터를 소비한다. 이들을 완전히 분리하여 서로 직접적으로 통신할 필요가 없도록 한다. Topi...
📌 Spark Streaming Spark Streaming 은 실시간으로 들어오는 데이터 스트림을 처리하기 위한 Spark Core API의 확장 라이브러리이다. 이벤트 단위 스트림 처리가 아니라 마이크로 배치 처리 방식으로 동작한다. 이벤트 단위 스트림 처리는 데이터가 시스템에 도착하는 즉시 이벤트를 바로 처리하는 방법이다. 반면 마이크로...
📌 Spark Submit Spark Submit은 스칼라나 자바, 파이썬 등으로 작성된 스파크 애플리케이션을 클러스터에 제출하여 실행하기 위한 명령이다. 애플리케이션을 스칼라로 작성한 경우 아래와 같이 작성한다. /bin/spark-submit \ --master yarn \ --deploy-mode cluster \ ...
📌 Spark DataFrame Spark DataFrame 은 RDD의 개념을 확장하여 데이터를 이름과 타입을 가진 열로 구성된 2차원 테이블로 다룰 수 있도록 한다. 데이터의 스키마를 내부적으로 가지고 있다. 특징 데이터는 이름과 타입이 정의된 열로 구성되었기 떄문에, 열의 이름을 사용하여 데이터에 접근할 수 있다. 스키마 정보를 가...
📌 RDD 관련 메서드 text_file = sc.textFile(test_file) textFile 은 텍스트 파일을 읽어 각 줄을 하나의 문자열로 갖는 RDD를 생성하는 메서드이다. counts = text_file.flatMap(lambda line: line.split(" ")) \ .map(lambda word:...
📌 Apache Spark란? Apache Spark 는 빅데이터를 효과적으로 처리하기 위한 분석 엔진이다. Hadoop 의 MapReduce 가 디스크 기반으로 처리하는 반면, Spark는 인메모리 기반 병렬 연산을 진행한다. 일반적으로 Spark가 Hadoop MapReduce보다 100배 정도 빠르다. 📌 특징 배치 프로세싱...
📌 Before public UserResponse getUser(Long userId) { return userRepository.findById(userId) .map(user -> UserResponse.of(user.getEmail(), user.getNickname())) .orElse...
📌 ResponseEntity란? ResponseEntity 는 HTTP 응답을 제어할 수 있도록 도와주는 클래스이다. 응답 body, 상태 코드, 헤더를 제어할 수 있다. HttpEntity 를 상속받아 구현되었다. @ResponseBody 는 응답의 body만 제어할 수 있다는 점에서 차이가 있다. 📌 구성 요소 public Response...
📌 정적 팩토리 메서드 패턴 Static Factory Method (정적 팩토리 메서드) 패턴은 객체 생성의 역할을 생성자 대신 정적 메서드에 위임하는 디자인 패턴이다. User user1 = new User("John", 30); User user2 = User.createWithNameAndAge("John", 30); 정적 팩토리 메서...