Summary
챕터4에서는 pyspark의 기본적인 RDD관련 내용이 나옴
page수가 많아서 걱정했는데 그냥 … 코드블럭과 기본적인 연산이
어떻게 일어나는지에 대한 하나하나의 설명이였다.
기초적인 내용이라 뒤의 내용에서 하나씩 참고해서 보면 좋을만한 내용이 있던 장
Keywords & Terms
- RDD(Resilient Destributed Dataset)
- RDD transformation & action = action때 spark는 일함
- Fault tolerant = MR가 대비해 spark가 error가 나면 어떻게 복구될까?를 생각
- Lineage = RDD의 생성순서
- DAG(Directed Acyclic Graph) = 특정job이 돌기위해 실행되는 프로레스
- Transformations = Lazy operations = why? = 최적의 DAG를 Actions단계에서 찾기위해
내용은 아래와 같다고 한다
- RDD
- RDD load at spark
- RDD transformation & action
- RDD 연산
분명 … 책의 소스코드는
https://sparkusingpython.com/
와 https://github.com/sparktraining/spark_using_python 에 있다는데…
깃허브는 살아있는데 sparkusingpython 사이트는 없어졌네 하하 …
깃허브는… 챕터별로 정리가된것도아니고 하하 이게 뭐지…
RDDs
- RDDs (Resilient Distributed Datasets) is Data Containers = 탄력적인 분산 데이터셋 = 데이터 컨테이너를 의미
- 스파크의 모든 다른 프로세싱들은 RDD abstraction을 share함
- transformations을 하든 섞든 뭘 하든 해서 새로운 RDDs를 만들고 할 수 있음
- Fault tolerant
예제
여기서 에러만 디텍팅하고싶다
파일을 읽으면 Base RDD lines 가 생김 ->
여기서 filter를 걸면 새로운 errors RDD 가 생김 ->
count하는게 action 단계인거고
물리적인 노드에서 발생하는 처리를 보면
driver와 다수의 worker
driver = main 함수 라고 생각
코드가 서밋되면 클러스터안에서 분배가 될거고
hdfs에서 파일을 읽으면 => 블럭단위로 분산되어서 저장 => 캐시가되면 워커의 메모리영역중
일부를 캐시영역으로
transformed RDD가 계속 생성이되면 그 결과값을 driver쪽으로 던져주는
그럼 여기서 Fault Tolerance란 뭐냐면
MR는 매번 I/O가 일어나니까 만약 중간에 에러가나면
이걸 다시 읽고 하고 하면됨
spark에선 rework를 어떻게하냐
만약 mapled RDD에서 만약 뻗었다 => 그럼 FilteredRDD부터 다시 수행함
이렇게해서 Fault Tolerance 를 보장함
연산에 대해서는
transformations 는 map filter groupby join 이런거 RDD로 다른 RDD를 만들어보다보니 Lazy operations
spark이 일을하는 단계는 Actions을 해야함 count, collect, save, show 이런것들 storage에 읽고쓰는거
왜 저걸 Lazy하게 할까 ? => (DAG = 특정잡이 돌기위해 실행되는 프로세스) 최적의 DAG를 Actions단계에서 찾기위해서
lineage는 RDD의 생성순서를 뜻하고
- 처음의 RDD를 읽고 계속변환함 = Transformation = 새로운 RDD가 계속 생성
- Lineage 트래킹하면서 fault tolerance 제공하는거고
- action이 일어나면 저장하든가 그럼
- Transformation : 새로운 RDD를 생성한다
- Actions : 드라이버쪽으로 결과를 리턴하거나 세이브하는것들 = spark이 일을하는 시점
- RDD -> DF 오면서 분석석도가 뙤또이해짐
Copyright © 2024 박홍(박형준, DevHyung).