Uvod v Pridružitev v Spark SQL

Kot vemo, se združitve v SQL uporabljajo za združevanje podatkov ali vrstic iz dveh ali več tabel, ki temeljijo na skupnem polju med njimi. V tej temi bomo spoznali Pridruži se v Spark SQL Pridruži se v Spark SQL.

V Spark SQL sta Dataframe ali Dataset tabelarna struktura v spominu, ki vsebuje vrstice in stolpce, razporejene po več vozliščih. Tako kot običajne tabele SQL lahko tudi v operacijskem sistemu Dataframe ali Dataset v Spark SQL izvajamo združitvene operacije na podlagi skupnega polja med njimi.

V SQL so na voljo različne vrste operacij pridruživanja. Glede na primer poslovne uporabe se odločimo za operacijo Join. V naslednjem razdelku bomo na primeru prikazali vsako vrsto združevanja.

Vrste pridruževanja v iskanju SQL

V Spark SQL so na voljo različne vrste združitev:

  • UNUTAR PRIDRUŽITE SE
  • CROSS PRIDRUŽITE se
  • LEVO ZUNAJ PRIDRUŽITE se
  • PRAVI ZDRUŽITE SE
  • POPOLNI ZDRUŽITE SE
  • LEVO SEMI PRIDRUŽITE SE
  • LEVO ANTI PRIDRUŽITE se

Primer ustvarjanja podatkov

Naslednje podatke bomo uporabili za prikaz različnih vrst pridružitev:

Knjižni nabor podatkov:

case class Book(book_name: String, cost: Int, writer_id:Int)
val bookDS = Seq(
Book("Scala", 400, 1),
Book("Spark", 500, 2),
Book("Kafka", 300, 3),
Book("Java", 350, 5)
).toDS()
bookDS.show()

Nabor podatkov za Writer:

case class Writer(writer_name: String, writer_id:Int)
val writerDS = Seq(
Writer("Martin", 1),
Writer("Zaharia " 2),
Writer("Neha", 3),
Writer("James", 4)
).toDS()
writerDS.show()

Vrste pridružitev

Spodaj je omenjenih 7 različnih vrst pridruživanja:

1. UNUTAR PRIDRUŽITE SE

INNER JOIN vrne nabor podatkov, ki ima vrstice, ki imajo ujemajoče se vrednosti v obeh nizih podatkov, tj. Vrednost skupnega polja bo enaka.

val BookWriterInner = bookDS.join(writerDS, bookDS("writer_id") === writerDS("writer_id"), "inner")
BookWriterInner.show()

2. CROSS PRIDRUŽITE se

CROSS JOIN vrne nabor podatkov, ki je število vrstic v prvem naboru podatkov, pomnoženo s številom vrstic v drugem naboru podatkov. Takšen rezultat se imenuje kartuzijanski izdelek.
Predpogoj: Če želite uporabiti navzkrižno povezavo, mora biti spark.sql.crossJoin.enabled nastavljeno na true. V nasprotnem primeru bo vržena izjema.

spark.conf.set("spark.sql.crossJoin.enabled", true)
val BookWriterCross = bookDS.join(writerDS)
BookWriterCross.show()

3. LEVO ZUNANJE PRIDRUŽITE se

LEFT OUTER JOIN vrne nabor podatkov, ki ima vse vrstice z levega nabora podatkov, in izravnane vrstice iz desnega nabora podatkov.

val BookWriterLeft = bookDS.join(writerDS, bookDS("writer_id") === writerDS("writer_id"), "leftouter")
BookWriterLeft.show()

4. PRAVI ZDRUŽI SE

RIGHT OUTER JOIN vrne nabor podatkov, ki ima vse vrstice z desnega nabora podatkov, in ujemajoče se vrstice z levega nabora podatkov.

val BookWriterRight = bookDS.join(writerDS, bookDS("writer_id") === writerDS("writer_id"), "rightouter")
BookWriterRight.show()

5. POPOLNI ZDRUŽITE SE

FULL OUTER JOIN vrne nabor podatkov, v katerem so vse vrstice, če se ujemajo levi ali desni nabor podatkov.

val BookWriterFull = bookDS.join(writerDS, bookDS("writer_id") === writerDS("writer_id"), "fullouter")
BookWriterFull.show()

6. LEVO SEMI PRIDRUŽITE se

LEFT SEMI JOIN vrne nabor podatkov, ki ima vse vrstice z levega nabora podatkov in njihovo korespondenco v desnem naboru podatkov. Za razliko od LEFT OUTER JOIN vrnjeni nabor podatkov v LEFT SEMI JOIN vsebuje le stolpce z levega nabora podatkov.

val BookWriterLeftSemi = bookDS.join(writerDS, bookDS("writer_id") === writerDS("writer_id"), "leftsemi")
BookWriterLeftSemi.show()

7. LEVO ANTI PRIDRUŽITE se

ANTI SEMI JOIN vrne nabor podatkov, ki ima vse vrstice z levega nabora podatkov, ki se ne ujemajo v pravem naboru podatkov. Vsebuje tudi samo stolpce iz levega nabora podatkov.

val BookWriterLeftAnti = bookDS.join(writerDS, bookDS("writer_id") === writerDS("writer_id"), "leftanti")
BookWriterLeftAnti.show()

Zaključek - Pridružite se Spark SQL

Pridružitev podatkov je ena najpogostejših in najpomembnejših operacij za izpolnjevanje primera naše poslovne uporabe. Spark SQL podpira vse osnovne vrste združitev. Medtem ko se pridružujemo, moramo upoštevati tudi uspešnost, saj bodo morda potrebni veliki omrežni prenosi ali celo ustvarili nabore podatkov, ki niso v skladu z našimi zmožnostmi. Za izboljšanje zmogljivosti Spark za ponovno naročilo ali potiskanje filtrov uporablja SQL optimizer. Iskra tudi omeji nevarno povezavo i. e CROSS PRIDRUŽITE se. Za uporabo navzkrižnega spajanja mora biti spark.sql.crossJoin.enabled izrecno nastavljeno na true.

Priporočeni članki

To je vodnik za Pridružitev v Spark SQL. Tukaj razpravljamo o različnih vrstah združitev, ki so na voljo v Spark SQL s primerom. Lahko pogledate tudi naslednji članek.

  1. Vrste združitev v SQL
  2. Tabela v SQL
  3. Poizvedba za vstavljanje SQL
  4. Transakcije v SQL
  5. PHP filtri | Kako preveriti uporabniški vnos z različnimi filtri?

Kategorija: