내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Spark SQL에서 사용자는 Join 힌트를 사용하여 사용해야 하는 Join Spark 유형을 제안할 수 있습니다. Spark 3.0 이전에는 BROADCAST와 같은 Join 힌트만 지원되었습니다. Spark 3.0부터 MERGE, SHUFFLE_HASH 및 SHUFFLE_REPLICATE_NL의 세 가지 조인 힌트가 추가되었습니다. 우선순위는 BROADCAST > MERGE > SHUFFLE_HASH > SHUFFLE_REPLICATE_NL입니다. BROADCAST 또는 SHUFFLE_HASH가 Join의 양쪽에 추가되면 Spark는 JoinType과 양쪽의 크기를 기반으로 빌드할 쪽을 선택합니다.
- -- Join Hints for broadcast join
- SELECT /*+ BROADCAST(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
- SELECT /*+ BROADCASTJOIN (t1) */ * FROM t1 left JOIN t2 ON t1.key = t2.key;
- SELECT /*+ MAPJOIN(t2) */ * FROM t1 right JOIN t2 ON t1.key = t2.key;
-
- -- Join Hints for shuffle sort merge join
- SELECT /*+ SHUFFLE_MERGE(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
- SELECT /*+ MERGEJOIN(t2) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
- SELECT /*+ MERGE(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
-
- -- Join Hints for shuffle hash join
- SELECT /*+ SHUFFLE_HASH(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
-
- -- Join Hints for shuffle-and-replicate nested loop join
- SELECT /*+ SHUFFLE_REPLICATE_NL(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
-
- -- When different join strategy hints are specified on both sides of a join, Spark
- -- prioritizes the BROADCAST hint over the MERGE hint over the SHUFFLE_HASH hint
- -- over the SHUFFLE_REPLICATE_NL hint.
- -- Spark will issue Warning in the following example
- -- org.apache.spark.sql.catalyst.analysis.HintErrorLogger: Hint (strategy=merge)
- -- is overridden by another hint and will not take effect.
- SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;