






- Cascading 이란 ?
분산데이터 그리드 혹은 클러스터 환경에서 대용량 데이터 처리작업을 정의, 공유, 실행 할때 사용되는 Query API 및 Query Planner 이다.
Cascading은 Apache Hadoop에 의존하기 때문에 Cascading의 개발 및 테스트를 위해서는 Hadoop이 로컬에 설치되어 있어야한다. Cascading은 복잡한 하둡 응용프로그램 개발과 job 생성 그리고 job 스케쥴링을 단순화한다.
쉽게 말하면 대용량 데이터에서 간단한 연산을 한다거나 원하는 필드를 생성하고 조인하고 원하는 데이터값을 찾을 때 사용함!!
- 데이터 처리
Cascading Processing Model 은 "pipes 와 filters" 상징(?)을 기반으로 되어있다. 개발자는 캐스캐이딩 API를 사용하여 pipelines 을 분할, 병합, 그룹화 할 수 있다.
* Pipe Assemblies
Pipe: cascading.pipe.Pipe 파이프 어셈블리 기본 클래스이다.
Each: cascading.pipe.Each 클래스는 각 튜플에 Function 혹은 Filter 작업을 적용한다.
GroupBy: cascading.pipe.GroupBy 클래스는 튜플 스트림에 선택된 필드들의 스트림을 그룹화하는 것이다.
CoGroup: cascading.pipe.CoGroup 클래스는 SQL의 join 과 같다. 입력 된 튜플 스트림을 조인 할 수 있다.
inner, outer, left, right 조인 이 있는데 어떤 것을 기준으로 조인하느냐~!! 그런것이다. ; ;
Every: cascading.pipe.Every클래스는 aggregator와 buffer가 있는데, aggregator는 count, sum 과 같은 작업을 하고 buffer는 구간의 작업을 처리하는 행위를 한다.
Sub Assembly: cascading.pipe.SubAssembly는 pipe Assemblie 재사용 등을 위한 클래스 이다. onSubAssemblies 참조. 안해봐서 잘이해안감. ㅠ
* common stream patterns.
Split: 스트림을 하나의 경로 혹은 그 이상의 패스로 보낸다.
Merge: 두개 이상의 스트림이 하나의 스트림으로 처리된다.
Join: 두개 이상의 스트림이 연결 된다.
* Each 와 Every Pipes
Each와 Every 파이프는 튜플 스트림에 작업을 할 수 있는 유일한 파이프이다.
Each 에서 agument 를 선택하지 않으면 전체 input 튜플에 대해서 작업을 한다. 결과 값은 default Fields.RESULTS에 리턴된다.
Every에서 Aggregator 결과 값은 input Tuple에 추가 된다. 주의 해야 할 것은 현재 그룹 튜플에 값을 결합시킨다.
* GroupBy와 CoGroup Pipes
그룹화된 튜플스트림의 정렬과 튜플스트림을 merge 혹은 join 할 수 있다.
- Cascading 에서 내가 생각하는 주관적 요점 - - !! Cascading UserGuide를 참고해서 발번역함.
- http://www.cascading.org/ << 이쪽에 가면 Cascading 의 최근 뉴스와 API문서 User Guide를 볼 수 있고 Downloads도 할 수 있다.
최근 덧글