3.0에서 추가된 shuffle_hash, shuffle_replicate_nl hint는 어떤 상황에서 쓰는게 좋을까요?
316
2 asked
3.0에서 추가된 merge, shuffle_hash, shuffle_replicate_nl hint는 어떤 상황에서 효과적일까요? 문서에서는 아쉽게도 각 힌트가 뭘 수행하는 지와 BROADCAST > MERGE > SHUFFLE_HASH > SHUFFLE_REPLICATE_NL 순서로 힌트 우선순위를 정한다는 것만 적혀있네요.
spark optimizer가 어떤 기준으로 join 전략을 택하는지도 알려주시면 좋을 것 같아요.
Answer 1
0
안녕하세요 김문수님,
하나의 질문에 꽤 많은 질문이 들어가있지만, 좋은 질문 입니다. 일단 모두 다 Join을 할 때 사용하는 전략인 것을 아시고 계실거라 생각됩니다. 짧게나마 하나 하나씩 설명해 보겠습니다.
MERGE: 간략하게 얘기하자면 Sort merge join이고 대용량 데이타를 사용할 때 쓰입니다. 데이타가 너무 큰 나머지, 메모리에 넣을 수 없을 때에 데이터가 정렬이 되어 있다면 조인을 할 때 서로 찾기 쉽기 때문에 유용하게 사용합니다.
SHUFFLE_HASH: 중간 사이즈 데이타를 조인할 때 사용하며, 조인하려는 데이타의 크기가 많이 차이날 때 많이 사용합니다. 작은 쪽은 해쉬화를 해서 조인하기 때문에 둘다 Sort할 필요가 없어서 좋습니다.
SHUFFLE_REPLICATE_NL: 카르테시안 조인일 때 많이 사용하고, 이름 그대로 Nested Loop(한글로 뭘라고 부르는지 모르겠네요) 조인할 때 많이 사용합니다. 하나하나씩 다 비교해봐야하는 아주 Expsensive한 프로세스기 때문에 어쩔 수 없을 경우에만 사용합니다.
마지막으로 "spark optimizer가 어떤 기준으로 join 전략을 택하는지도 알려주시면 좋을 것 같아요."에 대한 대답은, 경험상 Spark가 유저가 제안한 hint를 100%로 따라가지도 않고, 데이타 마다 그 조건이 너무 다르기 때문에 뭐라고 딱히 이렇게 한다라고 말할 수는 없겠지만, 위에 설명대로 Spark가 하나하나씩 테스트 해보고 가장 Optimal한 결정을 한다라고 말씀 드릴 수 밖에 없을 듯 합니다.
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
데이터 엔지니터의 현 트렌드가 궁금합니다
1
469
1
스칼라강의도 제작하신다고 하셨는데 계획하고 계실까요??
1
290
2
pyspark / spark 차이점 질문드립니다.
1
1156
1

