Увод у придруживање у Спарк СКЛ-у

Као што знамо спајања у СКЛ-у користе се за комбиновање података или редака из две или више табела заснованих на заједничком пољу између њих. У овој теми сазнаћемо о Придружите се Спарк СКЛ Придружите се Спарк СКЛ-у.

У Спарк СКЛ-у, Датафраме или Датасет су табеларна структура у меморији која има редове и ступце који су распоређени по више чворова. Као и уобичајене СКЛ табеле, и ми можемо изводити операције придруживања на Датафрамеу или скупу података присутних у Спарк СКЛ-у на основу заједничког поља између њих.

У СКЛ-у су доступне различите врсте операција придруживања. У зависности од случаја пословне употребе, доносимо избор операције придруживања. У следећем одељку ћемо приказати сваку врсту спајања са примером.

Врсте придруживања у Спарк СКЛ-у

Следе различите врсте придруживања доступних у Спарк СКЛ-у:

  • УНУТАР ПРИДРУЖИТЕ се
  • ЦРОСС ЈОИН
  • ЛЕВО ВАЊУ ПРИДРУЖИТЕ се
  • ПРАВО ВАЊУ ПРИДРУЖИТЕ СЕ
  • ПОТПУНО ПРИЈАВИТЕ СЕ
  • ЛЕВО СЕМИ ПРИДРУЖИТЕ се
  • ЛЕВО АНТИ ЈОИН

Пример стварања података

Следеће податке користит ћемо да демонстрирамо различите врсте спајања:

Боок Датасет:

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

Вритер Датасет:

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

Врсте придруживања

Испод се спомиње 7 различитих врста придруживања:

1. УНУТАР ПРИДРУЖИТЕ СЕ

ИННЕР ЈОИН враћа скуп података који има редове који имају подударне вриједности у обје скупове података, тј. Вриједност заједничког поља бит ће иста.

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

2. ЦРОСС ЈОИН

ЦРОСС ЈОИН враћа скуп података који је број редова у првом скупу података помножен са бројем редова у другом скупу података. Такав резултат се назива картезијански производ.
Предуслов: За коришћење унакрсног спајања, спарк.скл.цроссЈоин.енаблед мора бити постављен на труе. У супротном ће се изузети изузетак.

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

3. ЛЕВО ВАЊУ ПРИДРУЖИТЕ се

ЛЕФТ ОУТЕР ЈОИН враћа скуп података који има све редове са леве базе података и подударне редове с десног скупа података.

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

4. ПРИДРУЖИТЕ СЕ ВАЊСКО

РИГХТ ОУТЕР ЈОИН враћа скуп података који има све редове с десног скупа података, а подударне редове с лијеве базе података.

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

5. ПУНО ОУТЕР ПРИДРУЖИТЕ се

ФУЛЛ ОУТЕР ЈОИН враћа скуп података који има све редове када се подударају или лијеви или десни набор података.

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

6. ЛЕВО СЕМИ ПРИДРУЖИТЕ се

ЛЕФТ СЕМИ ЈОИН враћа скуп података који имају све редове са левог скупа података и има њихову преписку у десном скупу података. За разлику од ЛЕФТ ОУТЕР ЈОИН, враћени скуп података у ЛЕФТ СЕМИ ЈОИН садржи само ступце са леве базе података.

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

7. ЛЕВО АНТИ ЈОИН

АНТИ СЕМИ ЈОИН враћа скуп података који има све редове са леве базе података који се не подударају у десном скупу података. Такође садржи само ступце са левог скупа података.

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

Закључак - Придружите се Спарк СКЛ-у

Придруживање података једна је од најчешћих и најважнијих операција за испуњавање случаја наше пословне употребе. Спарк СКЛ подржава све основне врсте спајања. Приликом придруживања, требамо размотрити и перформансе јер могу захтијевати велике мрежне преносе или чак креирање скупова података који су изван наших могућности. За побољшање перформанси, Спарк користи СКЛ оптимизатор за поновну наруџбу или притискање филтера. Искра такође ограничава опасне спојеве и. е ЦРОСС ЈОИН. За коришћење унакрсног спајања, спарк.скл.цроссЈоин.енаблед мора бити експлицитно постављен на труе.

Препоручени чланци

Ово је водич за придруживање у Спарк СКЛ-у. Овдје смо са примјером разговарали о различитим врстама придруживања доступних у Спарк СКЛ-у. Такође можете погледати следећи чланак.

  1. Врсте придруживања у СКЛ-у
  2. Табела у СКЛ-у
  3. СКЛ Инсерт Куери
  4. Трансакције у СКЛ-у
  5. ПХП Филтери | Како потврдити унос корисника помоћу разних филтера?

Категорија: