در نوشته های پیشین درباره اسپارک و زبان SparkSQL گفته ایم و در این نوشته نخست چگونگی نصب آن بر روی یک تک ماشین (بی کلاستر) و سپس آغازی بر برنامه نویسی اسپارک را می گوییم. در این نوشته و نوشته های پیش رو، تنها می خواهیم ویژگی های اسپارک برای برنامه نویسی تحلیل و پردازش داده ها را بگوییم ولی وارد بحث های پیچیده تحلیل و پردازش نمی شویم. به زبان ساده، تنها می خواهیم به شما اسپارک را بشناسانیم.

نصب اسپارک بر روی تک ماشین

اسپارک به زبان جاوا نوشته شده است، پس می توان آن را بر روی هر سیستم عاملی نصب کنید، تنها نیاز است تا شما جاوا را بر روی سیستم عامل خود داشته باشید. با داشتن جاوا، باید بسته آرشیو شده آن را از سایت اسپارک دانلود کنید. در زمان این نوشته، نسخه پایدار اسپارک 2.4.4 است که همراه با نسخه پایدار هدوپ 2.7 ارائه می شود. می توانید از با کلیک روی این لینک، آن را دانلود کنید. سپس فایل دانلود شده را از حالت فشرده خارج کنید و پوشه بدست آمده را به نام spark تغییر داده و آن را در یک دایرکتوری دلخواه قرار دهید.

شکل زیر، زیر پوشه های درون پوشه دانلود شده را نشان می دهد که از میان آنها، پوشه bin دربرگیرنده همه فایل دودویی است. برای نمونه پیش از این گفتیم که اسپارک دارای پوسته هایی است که در واقع همان پوسته های تعاملی زبان های برنامه نویسی هستند. برای نمونه دستور spark-shell پوسته اسپارک برای زبان اسکالا و pyspark پوسته را برای زبان پایتون آغاز می کنند. کاری که باید آنجام دهیم این است که یک متغیر به نام SPARK_HOME در سیستم عامل خود بسیازیم و سپس مسیر خانگی، یا همان فایل تغییر نام داده شده به spark را به متغیر SPARK_HOME بدهیم. سپس باید مسیر SPARK_HOME/bin$ را به متغیر PATH بدهیم. دستورهای زیر چگونگی انجام آن برای سیستم عامل های لینوکس و مکینتاش را برای پوسته bash نشان می دهد.

آغاز یک پوسته اسکالا و پایتون

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

همانگونه که در شکل زیر می بینید، نخست در محیط لینوکس یا مکینتاش، با دستور spark-shell/. پوسته زبان اسکالا راه اندازی شده است. سپس یک سری از اطلاعات همانند نشانی پوسته گرافیکی از راه مرورگر، نام شی پیش فرض به نام sc از کلاس SparkContext و نشست اسپارک (Spark Session) نشان داده می شود. از این پس می توانیم روبروی اعلان <scala، دستورهای اسپارک با API های زبان اسکالا را بنویسیم. برای نمونه در شکل زیر، نخست با واژه کلیدی val یک متغیر به نام numbers از نوع لیست ها (به کمک toList) ساخته ایم که همه شماره های یک تا صد را در بر می گیرد. سپس به کمک ویژگی length درون تابع ()println، می توانیم شمار (یا تعداد) عصنرهای درون numbers را نشان دهیم.

همچنین برای دسترسی به پوسته پایتون اگر لینوکس یا مکینتاش را به کار می برید، باید دستور pyspark/. را اجرا کرده و سپس در محیط تعاملی پایتون باز شده، به ترتیب دستورهای زیر را انجام دهید. توجه کنید تا بدین جا ما هیچ گونه برنامه نویسی اسپارک را انجام ندادیم، بلکه به کمک پوسته های اسکالا و پایتون تعبیه شده در اسپارک، یک سری از کدهای خام اسکالا و پایتون را انجام داده ایم.

نمونه کلاس SparkContext

گفتیم که SparkContext یک شی یا کلاسی درون درایور برنامه (یا راه انداز برنامه Driver Program) است. هر برنامه اسپارک باید یک نمونه از این کلاس را بسازد و همچنین هر برنامه تنها می تواند یک نمونه از کلاس را داشته باشد. زمانی که یک پوسته sc را راه اندازی می کنید، یک نمونه از این کلاس به نام متغیر sc ساخته می شود، زیرا خود پوسته اسپارک نیز یک برنامه اسپارک است. بنابراین اگر می خواهید که یک نمونه دیگر بسازید، پس باید نمونه کنونی را متوقف (Stop) کنید.

در شکل زیر و به کمک دستورهای sc.getClass در جاوا و اسکالا و (type(sc در زبان پایتون، کلاس شی sc را نشان داده ایم که نمونه ای از کلاس SparkContext است. بنابراین اگر بخواهیم این کلاس را در پروژه های جاوا، اسکالا یا پایتون به کار ببریم، باید به ترتیب دستورهای زیر را در اسکریپت های جاوا، اسکالا یا پایتون پیوست کنیم.