Κοινή χρήση τεχνολογίας

Σύνοψη της χρήσης υπόδειξης στο spark

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Στο spark sql, οι χρήστες μπορούν να χρησιμοποιήσουν το Join hint για να προτείνουν ποιον τύπο Join Spark πρέπει να χρησιμοποιήσει. Πριν από το Spark 3.0, υποστηρίζονταν μόνο υποδείξεις Συμμετοχής, όπως ΕΚΠΟΜΠΗ. Ξεκινώντας από το Spark 3.0, έχουν προστεθεί τρεις Συμβουλές Συμμετοχής, MERGE, SHUFFLE_HASH και SHUFFLE_REPLICATE_NL. Η προτεραιότητα είναι BROADCAST > MERGE > SHUFFLE_HASH > SHUFFLE_REPLICATE_NL. Εάν προστεθούν BROADCAST ή SHUFFLE_HASH και στις δύο πλευρές του Join, το Spark θα επιλέξει ποια πλευρά θα χτίσει με βάση τον JoinType και το μέγεθος και των δύο πλευρών.

  1. -- Join Hints for broadcast join
  2. SELECT /*+ BROADCAST(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  3. SELECT /*+ BROADCASTJOIN (t1) */ * FROM t1 left JOIN t2 ON t1.key = t2.key;
  4. SELECT /*+ MAPJOIN(t2) */ * FROM t1 right JOIN t2 ON t1.key = t2.key;
  5. -- Join Hints for shuffle sort merge join
  6. SELECT /*+ SHUFFLE_MERGE(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  7. SELECT /*+ MERGEJOIN(t2) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  8. SELECT /*+ MERGE(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  9. -- Join Hints for shuffle hash join
  10. SELECT /*+ SHUFFLE_HASH(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  11. -- Join Hints for shuffle-and-replicate nested loop join
  12. SELECT /*+ SHUFFLE_REPLICATE_NL(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  13. -- When different join strategy hints are specified on both sides of a join, Spark
  14. -- prioritizes the BROADCAST hint over the MERGE hint over the SHUFFLE_HASH hint
  15. -- over the SHUFFLE_REPLICATE_NL hint.
  16. -- Spark will issue Warning in the following example
  17. -- org.apache.spark.sql.catalyst.analysis.HintErrorLogger: Hint (strategy=merge)
  18. -- is overridden by another hint and will not take effect.
  19. SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;

Σχέση χρήσης στο spark hint: https://blog.51cto.com/u_15435003/5296344