Bevezetés a csatlakozáshoz a Spark SQL-hez

Mint tudjuk, az SQL összekapcsolásait két vagy több táblázat adatainak vagy sorok összekapcsolására használják, a köztük lévő közös mező alapján. Ebben a témában megismerjük a Csatlakozás a Spark SQL-hez csatlakozást a Spark SQL-hez.

A Spark SQL esetében az Dataframe vagy az Adatkészlet egy memóriában lévő táblázatos struktúra, amelynek sorai és oszlopai vannak elosztva több csomópont között. A normál SQL táblázatokhoz hasonlóan a Spark SQL-ben jelen lévő Dataframe vagy Dataset is csatlakozási műveleteket hajthatunk végre köztük lévő közös mező alapján.

Különféle típusú Join műveletek érhetők el az SQL-ben. Az üzleti felhasználástól függően választhatjuk a Join műveletet. A következő szakaszban példákkal mutatjuk be az egyes csatlakozástípusokat.

Csatlakozás típusai a Spark SQL-ben

Az alábbiakban bemutatjuk a Spark SQL-ben elérhető különféle csatlakozásokat:

  • BELSŐ ÖSSZEKAPCSOLÁS
  • CSATLAKOZÁS
  • Bal oldali csatlakozás
  • JOGI KÜLSŐ CSATLAKOZÁS
  • TELJES KÜLSŐ CSATLAKOZÁS
  • Bal oldali félév csatlakozás
  • Balra csatlakozás

Példa az adatok létrehozására

A következő adatokat fogjuk használni a különféle csatlakozási módok bemutatására:

Könyv adatkészlet:

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()

Író adatkészlete:

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()

Csatlakozás típusai

Az alábbiakban felsoroljuk a 7 különféle csatlakozástípust:

1. Belső csatlakozás

Az INNER JOIN visszaadja azt az adatkészletet, amelynek sorai mindkét adatkészletben megegyezõ értékekkel rendelkeznek, azaz a közös mezõ értéke azonos lesz.

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

2. CSATLAKOZÁS

A CROSS JOIN visszaadja azt az adatkészletet, amely az első adatkészlet sorának száma szorozva a második adatkészletben szereplő sorok számával. Az ilyen eredményt Descartes terméknek nevezzük.
Előfeltétel: A keresztsugárzás használatához a spark.sql.crossJoin.enabled értékét true értékre kell állítani. Ellenkező esetben a kivétel elveszik.

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

3. Bal oldali csatlakozás

A LEFT OUTER JOIN visszaadja azt az adatkészletet, amelyben minden sor található a bal oldali adatkészletből, és az illesztett sorokat a jobb oldali adatkészletből.

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

4. JOGI KÜLSŐ CSATLAKOZÁS

A JOBB KIMENETI CSATLAKOZÁS visszaadja azt az adatkészletet, amelyben minden sor található a jobb oldali adatkészletből, és az illesztett sorok a bal oldali adatkészletből.

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

5. TELJES KIEGÉSZÍTÉS

A FULL OUTER JOIN visszaadja azt az adatkészletet, amelyben minden sor szerepel, amikor egyezés található a bal vagy a jobb oldali adatkészletben.

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

6. Bal oldali csatlakozás

A LEFT SEMI JOIN visszaadja azt az adatkészletet, amelyben a bal oldali adatkészlet összes sora szerepel, és amelyek megfelelnek a jobb oldali adatkészletben. A LEFT OUTER JOIN-tól eltérően a LEFT SEMI JOIN visszaadott adatállománya csak a bal oldali adatkészlet oszlopait tartalmazza.

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

7. Bal oldali csatlakozás

Az ANTI SEMI JOIN visszaadja azt az adatkészletet, amelyben a bal oldali adatkészlet összes sora szerepel, és amelyek nem egyeznek meg a jobb oldali adatkészlettel. Csak a bal oldali adatkészlet oszlopait tartalmazza.

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

Következtetés - Csatlakozzon a Spark SQL-hez

Az adatok összekapcsolása az egyik leggyakoribb és legfontosabb művelet az üzleti felhasználási esetünk teljesítéséhez. A Spark SQL támogatja az összes alapvető csatlakozástípust. Csatlakozás közben figyelembe kell vennünk a teljesítményt is, mivel nagy hálózati átvitelt igényelhetnek, vagy akár adatkezelő készíthetik is a kezelési képességünket. A teljesítmény javítása érdekében a Spark az SQL optimalizálót használja a szűrők újrarendeléséhez vagy leállításához. A szikra korlátozza a veszélyes csatlakozást is. e CROSS JOIN. A keresztirányú csatlakozás használatához a spark.sql.crossJoin.enabled kifejezetten igazra kell állítani.

Ajánlott cikkek

Ez egy útmutató a Csatlakozás a Spark SQL-hez. Itt a Spark SQL-ben elérhető különféle csatlakozások típusát tárgyaljuk a példával. A következő cikket is megnézheti.

  1. Csatlakozás típusai az SQL-ben
  2. Táblázat SQL-ben
  3. SQL beszúrási lekérdezés
  4. Tranzakciók az SQL-ben
  5. PHP szűrők | Hogyan validálhatjuk a felhasználói bemeneteket különféle szűrőkkel?

Kategória: