대용량 데이터 Join
835
27 asked
안녕하세요
대용량 데이터 join 방법에 대해 질문드립니다.
source A,B,C가 있고 A와 B를 union 하고 C를 조인해야 하는 상황입니다. A, B, C 각각은 모두 대용량 데이터입니다.
하지만, 이 코드를 실행하면 spark 내부적으로 C를 2번 read해 A와 C를 조인하고, B와 C를 조인하는 DAG이 생성되는 것을 UI에서 확인했습니다.
이에, C를 1번만 read하게 만들기 위해서 cDF.persist(StorageLevel.DISK_ONLY)를 중간에 삽입해, 원래 의도대로 A와 B를 union하고 C를 조인하도록 DAG을 변경하였습니다.
이런 상황에서 persist를 사용하지 않고 해결할 방법이 있을까요?
Answer 1
0
안녕하세요,
우선 질문 주신 것 감사합니다. 우선 Cache나 Persist는 그런 경우를 대비해서 만들어 놓았습니다.
Persist를 사용하기 힘드시다면, A와 B를 조인하고 아웃풋한 후에 다시 읽어들여 조인하시는 방법도 있습니다만,
혹시 join 명령어를 사용하셨나요? sql 커멘드를 사용하셔서 쿼리를 돌려보시겠어요?
그리고 현재 문제는 Disk Space 때문에 그러신가요? MEMORY_AND_DISK_SER를 사용하시면 안되는 이유가 있나요?
아니면 통합시 Shuffle 속도 때문에 그러신가요? 조인하시기 전에 필요한 데이터만 필터 후 조인하시는 건가요?
데이터를 보지 않은 상태에서 도움이 될지 모르겠지만, 생각나는 대로 적어봤습니다.
0
상세한 답변 정말 감사합니다.
1) join 함수를 사용하였습니다. sql을 사용하는 것과 join 을 사용하는 것에 차이가 있을 수가 있나요?? 방금 physhical plan을 비교해보았는데, 동일했습니다.
2) Disk Space가 아니라, 데이터가 크면 cache나 persist를 할 수 밖에 없는지 궁금했습니다.ㅎㅎ! 이렇게 쓰는게 맞는가 해서요
3) shuffle 속도를 높이는 튜닝도 있을까요???
4) 조인시 필요한 데이터만 필터 후 조인하고 있습니다.
0
1) 네 가끔식 쿼리에 따라 차이가 나는 경우가 있습니다.
2) 거의 80~90는 Persist를 사용하신다고 보시면 됩니다. 그리고 최대한 디스크에 흘리지 않는게 최대 관건입니다.(Disk Spill한다고 하죠)
3) 네 여러가지가 있는데, 그 중 하나가 최대한 좋은(메모리 많은) 인스턴스를 단시간 사용하시고, 그 인스턴스 개수를 줄이는게 셔플을 줄이는 좋은 방법입니다.
4) 굿입니다! ㅎㅎ
databricks에 cluster 메뉴가 없습니다.
0
43
2
주피터 사용 및 도커 설치
0
90
2
S3 폴더 구조에 따른 Static Partition Pruning, DPP 질문
0
76
2
broadcast Join과 boradcast + UDF 차이
0
62
2
append 모드 사용 시 집계
0
63
2
CDC 기반 스파크 아키텍처 구현 방법이 궁금합니다.
0
107
2
BroadCast 지원 가능 메모리 문의
0
88
2
rdd, dataframe, spark sql 각각 언제 사용할까요?
0
185
2
강의 후반부에 나온 실습 코드는 어디서 받을 수 있나요?
0
195
3
cdc 기반의 스트리밍 데이터 처리
1
230
2
broadcast 코드 예시 관련 질문
0
126
2
재생에 문제가 생겼어요 라는 메세지가 자꾸 뜨네요
0
113
1
스트리밍 예제 실행 시 py4j.protocol.Py4JNetworkError 발생
0
213
2
Repartition과 Coalesce에 대해 궁금한 점이 있어요!
1
165
1
pyspark 현업에서 로컬 개발 및 운영
1
335
1
Spark Structured Streaming Gracefully shutdown 질문
1
443
2
PySpark Runtime Architecture 내용 중 질문이 있습니다!
1
212
1
docker 설치 이후에 터미널 여는 부분에서 막혔습니다
1
458
2
app-<timestamp>-<executor_id> 폴더가 spark-events 내부에 생기게 하고 싶습니다.
1
275
1
pyspark.SparkContext 실행 오류 관련 질문
2
378
1
스파크 아키텍쳐 관련 문의 드립니다.
1
351
2
3.0에서 추가된 shuffle_hash, shuffle_replicate_nl hint는 어떤 상황에서 쓰는게 좋을까요?
1
316
1
데이터 엔지니터의 현 트렌드가 궁금합니다
1
469
1
스칼라강의도 제작하신다고 하셨는데 계획하고 계실까요??
1
290
2

