پردازش داده‌های بزرگ با کتابخانه Dask در پایتون

اگر با ابزارهای داده‌کاوی و یادگیری ماشین بر روی یک سیستم خانگی کار کرده باشید، احتمالا با مشکل کمبود حافظه اصلی(RAM) مواجه شده‌اید. پردازش دادگان حجیم و بزرگ معمولا حافظه اصلی زیادی را از سیستم اشغال می‌کند، مخصوصا هنگامی که نیاز است تا تمامی داده‌ها بر روی حافظه اصلی بارگزاری(Load) شوند و مورد پردازش قرار گیرند.

فرض کنید شما یک عروسک ساز هستید و می‌خواهید قطعات مختلف عروسک را به هم بچسبانید. برای این کار باید ۳۰قطعه مختلف از ۱۰عروسک را(هر کدام سه قطعه) بر روی میز گذاشته و به هم بچسبانید. حال فرض کنید ۱۲۰قطعه مختلف از ۴۰عروسک دارید. طبیعتا یا باید ۳میز دیگر اضافه کنید تا ۴میز داشته باشید(هر میز ۱۰عروسک ظرفیت دارد) و یا ۱۲۰قطعه را ۳۰تا۳۰تا بر روی یک میز گذاشته و به هم بچسبانید. یعنی شما تعداد داده‌های خود را به قطعات کوچکتری تبدیل کرده‌اید تا بر روی میزتان قرار گیرند.

حال فرض کنید یک حافظه اصلی ۸گیگابایتی دارید و ۱۰گیگابایت داده برای پردازش! چه باید بکنیم؟ روش‌های متفاوتی برای این کار وجود دارد که یکی از آن‌ها استفاده از کتابخانه Dask در پایتون است. این کتابخانه که شعارش پردازش مقیاس‌پذیر(Scalable) در پایتون است می‌تواند در پردازش حجم وسیعی از اطلاعات و داده‌ها به متخصصان علم داده کمک کند.

این کتابخانه می‌تواند داده‌ها را به قسمت‌های کوچکتری تقسیم کند و این به صورت موازی(Parallel) پردازش کند، کاری که برخی از کتابخانه‌های مشهور دیگر در انجام آن ضعف دارند.

اگر با کتابخانه‌های Numpy و Pandas در پایتون کار کرده باشید متوجه خواهید شد که مشکل کمبود حافظه و همچنین مشکل توسعه‌پذیر نبودن، از نقاط ضعف آن‌هاست. در واقع با استفاده از این کتابخانه‌ها نمی‌توان یک سری از اطلاعات را به صورت موازی در ماشین‌های مختلف( یا همان خوشه کامپیوتری-Cluster) پردازش نمود. کاری که Dask قابلیت انجام آن را دارد.

پروژه Dask توسط Conda(مالک Anaconda) حمایت می‌شود و برای پردازش داده‌های حجیم بسیار کارا می‌باشد. برای اطلاعات بیشتر و همچنین یک آموزش کوچک هم می‌توانید اینجا را ببینید.