من چند وقتی هست که از بکاند سوئیچ کردم به دیتا و در این مسیر الان رسیدم به اسکالا و اسپارک. یکی از چیزایی که این وسط با گذشته تفاوت داره راه و روش دیباگ کردنه. قبلا توی php یا حتی Go، خیلی راحت متغیر رو چاپ میکردم و خودم خلاص و جونم آزاد :)) روشم درست نبود ولی جواب میداد و حداقل تو php از سر و کله زدن با اون xdebug لعنتی بهتر بود :)). ولی امروز به جایی رسیدم که واقعا دیگه نمیشد. باید بر میگشتم به راه و روشی که دکتر همتی برای سی++ مجبورمون میکرد: دیباگ کردن آدمیزادی.
بعد از گشتن برای کانفیگ دیباگر به این لینک رسیدم؛ ماجرا خیلی سادهست!
۱. اول برنامه رو پکیج کنید. طبعا من تو اسکالا از sbt استفاده میکنم و این کار با `sbt package` انجام میشه.
۲. موقع سابمیت کردن جاب، سوراخ رو برای دیباگر باز کنید. این کار با اجرای
export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
داخل خط فرمان انجام میشه.
۳. یه دیباگر ریموت ایجاد کنید. برای این کار از منوی Run گزینهی Edit Configurations رو انتخاب کنید و با کلیک روی + گزینهی Remote رو انتخاب کنید و اوکی کنید (تصویر زیر).
۴. پکیج رو با آدرس کامل و همهی بند و بساطش سابمیت کنید. برای پکیج من اینطور چیزی میشه:
spark-submit --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.4.3 $(pwd)/target/scala-2.11/stream_2.11-0.1.jar
۵. داخل Intellij IDEA از منوی Run گزینهی Run Filan رو انتخاب کنید که Filan همون اسمیه که تو مرحلهی ۳ انتخاب کردید.
الان هر جا که بریکپوینت گذاشته باشید، تو پنجرهی دیباگ میتونید ببینید ماجرا چیه و از چه قراره.
پ.ن: علی جان اگه این پست رو خوندی، من برای نوشتن توضیح اختیاری تصویر به مشکل خوردم. وقتی سر جاش کلیک میکنم و یچی مینویسم یدفه صفحه سفید میشه. فایرفاکس آخرین نسخه روی اوبونتو ۱۸.۰۴.