Sobes.tech
Middle

Spark-də broadcast join nədir və nə üçün lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

Broadcast join Apache Spark-da optimallaşdırma əməliyyatıdır; burada cədvəllərdən biri (adətən kiçik olan) bütün klaster düyünlərinə (node-lara) yayılır (broadcast edilir) və burada böyük cədvəl ilə birləşdirilir.

Bunun məqsədi nədir?

  • Normal shuffle join-də hər iki cədvəl bölünür və şəbəkə vasitəsilə göndərilir, bu böyük məlumatlar üçün baha başa gələ bilər.
  • Əgər bir cədvəl kifayət qədər kiçikdirsə, onu bütün işləmə düyünlərinə 'broadcast' etmək olar, beləliklə böyük cədvəlin shuffle-dən qaçınılır.
  • Bu, join-in icrasını əhəmiyyətli dərəcədə sürətləndirir, şəbəkə trafikini azaldır və klasterin yükünü yüngülləşdirir.

İstifadə nümunəsi:

val smallDF = spark.read.parquet("small_table.parquet")
val largeDF = spark.read.parquet("large_table.parquet")

val joined = largeDF.join(broadcast(smallDF), "key")

Burada, broadcast(smallDF) Spark-ə smallDF-ni bütün düyünlərə yaymasını göstərir, bu da largeDF ilə birləşdirmə performansını yaxşılaşdırır.

Broadcast join xüsusilə bir cədvəlin digərinə nisbətən əhəmiyyətli dərəcədə kiçik olduğu və hər düyündə yaddaşda saxlana biləcəyi ssenarilərdə faydalıdır.