زمان تخمینی مطالعه:‌ 3 دقیقه

متغیر های همگانی


مقدمه :

اسپارک دو نوع مختلف متغیرهای اشتراکی را شامل می شود، یکی متغیرهای انتشار (Broadcast Variables ) و دومی انباره ها ( Acccumlators ) :

Broadcast Variables : به میزان کفایت استفاده می شود، توزیع می کند مقادیر بزرگ را.

Accumulators : برای جمع کردن اطلاعات کالکشن های ویژه به کار می رود.

متغیرهای همگانی :

متغیرهای همگانی ( Broadcast ) به برنامه نویسان اجازه می دهند که متغیر فقط خواندنی کش شده را روی هر ماشین نگه دارند که سریع تر است از انتقال یک کپی آن با Task ( کار ) مربوطه.

برای مثال برای گرفتن هر گره ( node )، گرفتن یک کپی از یک دیتاست ورودی بزرگ، می توانند با یک روش کارآمد استفاده می شوند.

اسپارک همچنین اجازه می دهد که متغیرهای همگانی توزیع شده استفاده کنند از الگوریتم های همگانی برای کاهش هزینه ی ارتباطی.

Action های اسپارک از طریق مجموعه ای از Stage ( طبقه ) ها اجرا می شوند و با دستورالعمل "Shuffle" توزیع شده جدا می شوند. اسپارک به وسیله هراستیج به طور خودکار Broadcast می کند داده های متداول را که Task ها از آن ها استفاده می کنند.

دیتا ( داده ) ی Broadcast شده در این راه به صورت موازی شده ( Serialized ) هست وقبل از اجرای هر Task غیر موازی ( deSerialized ) می شود. این بدین معنی است که ساخت متغیرهای همگانی به طور واضح، فقط زمانی مفید است که Task ها سرتاسر چندین طبقه ( Stage ) به داده های یکسان نیاز دارند یا زمانی که داده را به صورت غیرموازی کش می کنند مهم است.

متغیرهای همگانی از Variable V با صدا زدن تابع SparkContext.Broadcast(V) ساخته می شوند.

متغیر همگانی یک پوشش اطراف V است و این مقدار با صدا زدن تابع Value به دست می آید.

کد زیر این داستان را نشان می دهد.

scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))

خروجی

broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)

بعد از این که متغیر همگانی ساخته شد، روی تمام توابعی که روی خوشه اجرا می شوند به جای Value استفاده می شود.بنابراین V بیش از یک بار به گره ها ( nodes ) انتقال داده نمی شود.

به علاوه، آبجکت V نباید بعد از broadcast تغییر کند به دلیل این که مطمین باشیم که تمام گره ها (nodes ) مقدار یکسانی از متغیر همگانی دریافت کرده اند.


لطفا در راستای هرچه بهتر شدن کیفیت مطالب نظر خود را در رابطه با این سرفصل برای ما ارسال نمایید.