كيفية إعداد PySpark لجهاز الكمبيوتر الدفتري Jupyter الخاص بك

يعد Apache Spark أحد أهم الأطر في علم البيانات. إنها تدرك إمكانية الجمع بين كل من البيانات الكبيرة والتعلم الآلي. هذا بسبب:

  • Spark سريع (يصل إلى 100x أسرع من Hadoop MapReduce التقليدي) بسبب التشغيل في الذاكرة.
  • يوفر كائنات بيانات قوية وموزعة ومتسامحة مع الأخطاء (تسمى RDDs)
  • إنه يدمج بشكل جميل مع عالم التعلم الآلي وتحليلات الرسم البياني من خلال حزم إضافية مثل MLlib و GraphX.

يتم تطبيق Spark على Hadoop / HDFS وكتب معظمها في Scala ، وهي لغة برمجة وظيفية تعمل على JVM.

ومع ذلك ، بالنسبة لمعظم المبتدئين ، ليست Scala لغة أولى رائعة للتعلم عند المغامرة في عالم علم البيانات.

لحسن الحظ ، توفر Spark واجهة برمجة تطبيقات Python رائعة تسمى PySpark. يتيح ذلك لمبرمجي Python التفاعل مع إطار عمل Spark - مما يتيح لك معالجة البيانات على نطاق واسع والعمل مع الكائنات عبر نظام ملفات موزع.

لماذا استخدام Jupyter Notebook؟

الآن ، لا يتحقق الوعد بإطار عمل البيانات الكبيرة مثل Spark فعليًا إلا عندما يتم تشغيله على مجموعة تحتوي على عدد كبير من العقد.

لسوء الحظ ، لمعرفة وممارسة ذلك ، عليك أن تنفق المال. بعض الخيارات السريعة هي:

  • مجموعة Amazon Elastic MapReduce (EMR) مع تخزين S3
  • مجموعة Databricks (النسخة المدفوعة ، نسخة المجتمع المجانية محدودة نوعًا ما في خيار التخزين والتجميع)

تكلف الخيارات المذكورة أعلاه المال فقط لبدء التعلم (لم يتم تضمين Amazon EMR في برنامج المستوى المجاني لمدة عام واحد على عكس مثيلات EC2 أو S3).

ومع ذلك ، إذا كنت بارعًا في مهام Python / Jupyter والتعلم الآلي ، فمن المنطقي تمامًا البدء من خلال تدوير مجموعة واحدة على جهازك المحلي. يمكنك أيضًا تشغيل واحدة على Amazon EC2 إذا كنت تريد المزيد من التخزين والذاكرة.

تذكر أن Spark ليست لغة برمجة جديدة عليك تعلمها.

بدلاً من ذلك ، إنه إطار عمل فوق HDFS. يقدم هذا مفاهيم جديدة مثل العقد والتقييم البطيء ونموذج التحول (أو "رسم وتقليل") البرمجة.

في الواقع ، Spark متعددة الاستخدامات بما يكفي للعمل مع أنظمة الملفات الأخرى من Hadoop - مثل Amazon S3 أو Databricks (DBFS).

لكن الفكرة هي نفسها دائما. تقوم بتوزيع (وتكرار) مجموعة البيانات الكبيرة الخاصة بك في مجموعات صغيرة ثابتة عبر العديد من العقد. ثم تقوم بإحضار محرك حساب بالقرب منهم بحيث تكون العملية بأكملها متوازية ومتسامحة مع الأخطاء وقابلة للتطوير.

من خلال العمل مع PySpark و Jupyter notebook ، يمكنك تعلم كل هذه المفاهيم دون إنفاق أي شيء. يمكنك أيضًا التفاعل بسهولة مع SparkSQL و MLlib لمعالجة البيانات والتعلم الآلي.

سيكون من الأسهل بكثير البدء في العمل مع مجموعات كبيرة من واقع الحياة إذا كنت قد استوعبت هذه المفاهيم مسبقًا!

ومع ذلك ، بخلاف معظم مكتبات Python ، فإن البدء ب PySpark ليس سهلاً مثل تثبيت pip ... والاستيراد ....

معظم المستخدمين الذين لديهم خلفية بيثون يأخذون سير العمل هذا على أنه منح لجميع حزم بيثون الشائعة. ومع ذلك ، فإن التحرير والسرد PySpark + Jupyter يحتاج إلى المزيد من الحب.

في هذا البرنامج التعليمي الموجز ، سنتعرف خطوة بخطوة على كيفية إعداد PySpark وكل تبعياته على نظامك ، ثم كيفية دمجها مع دفتر Jupyter.

يفترض البرنامج التعليمي أنك تستخدم نظام تشغيل Linux. هذا ببساطة لأنه ، في الحياة الواقعية ، ستقوم دائمًا بتشغيل Spark واستخدامها على كتلة باستخدام بعض الخدمات السحابية مثل AWS أو Azure. من المرجح أن تعمل هذه العقد العنقودية على نظام Linux.

يُنصح بالراحة مع عملية الإعداد المستندة إلى Linux CLI لتشغيل Spark وتعلمها. هذا دليل ممتاز لإعداد توزيعة Ubuntu على جهاز يعمل بنظام Windows باستخدام Oracle Virtual Box.

عملية التثبيت والإعداد

تحقق من تثبيت Python 3.4+ ، لأن هذا مطلب من أحدث إصدار من PySpark. إذا كان لديك Python 2.7 الافتراضي فقط على نظام Linux لديك ، فيرجى تثبيت Python 3 قبل المتابعة.

python3 - الإصدار

بعد ذلك ، قم بتثبيت أداة pip3:

سودو عرضة تثبيت python3-pip

تثبيت Jupyter لبرنامج Python 3:

pip3 تثبيت كوكب المشتري

زيادة متغير PATH لإطلاق دفتر Jupyter بسهولة من أي مكان:

تصدير PATH = $ PATH: ~ / .local / bin

التالي هو الخطوة المهمة لاختيار إصدار Java.

هناك العديد من أشكال Java أكثر من العلامات التجارية للحبوب في متجر أمريكي حديث. تم عرض Java 8 للعمل مع UBUNTU 18.04 LTS / SPARK-2.3.1-BIN-HADOOP2.7. لذلك سوف نذهب مع ذلك:

sudo add-apt-repository ppa: webupd8team / java
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

التحقق من التثبيت:

جافا ، الإصدار

عيّن بعض متغيرات PATH المتعلقة بـ Java:

تصدير JAVA_HOME = / usr / lib / jvm / java-8-oracle
تصدير JRE_HOME = / usr / lib / jvm / java-8-oracle / jre

بعد ذلك ، يجب عليك تثبيت Scala:

sudo - الحصول على تثبيت سكالا

التحقق من التثبيت:

سكالا -version

بعد ذلك ، قم بتثبيت py4j لتكامل Python-Java:

pip3 تثبيت py4j

الآن لأباتشي سبارك. انتقل إلى هذا الرابط واختر أحدث إصدار (افتراضي) لتنزيله. أنا أستخدم Spark 2.3.1 مع Hadoop 2.7. بعد التنزيل ، قم بفك ضغطه أينما تريد استخدام Spark منه.

sudo tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz

الآن ، مجموعة طويلة من الأوامر لإضافتها إلى البرنامج النصي .bashrc shell. سيؤدي ذلك إلى تعيين متغيرات البيئة لإطلاق PySpark مع Python 3 ، والسماح لها بالاتصال به من دفتر Jupyter. خذ نسخة احتياطية من .bashrc قبل القيام بذلك.

افتح .bashrc باستخدام أي محرر تريده ، مثل gedit .bashrc. أضف الأسطر التالية في النهاية:

تصدير SPARK_HOME = '/ {YOUR_SPARK_DIRECTORY} /spark-2.3.1-bin-hadoop2.7'
تصدير PYTHONPATH = $ SPARK_HOME / python: $ PYTHONPATH
تصدير PYSPARK_DRIVER_PYTHON = "jupyter"
تصدير PYSPARK_DRIVER_PYTHON_OPTS = "مفكرة"
تصدير PYSPARK_PYTHON = python3
تصدير PATH = $ SPARK_HOME: $ PATH: ~ / .local / bin: $ JAVA_HOME / bin: $ JAVA_HOME / jre / bin

تذكر أن تستبدل {YOUR_SPARK_DIRECTORY} بالعنوان الفعلي للدليل حيث قمت بفك حزمة Spark في الخطوة أعلاه.

يمكنك التحقق من إعداد Spark من خلال الانتقال إلى دليل / bin داخل {YOUR_SPARK_DIRECTORY} وتشغيل أمر spark-shell --version. هنا يمكنك معرفة أي إصدار من Spark لديك ، وأي إصدارات من Java و Scala تستخدمه.

هذا هو! بعد ذلك ، يجب أن تكون قادرًا على تدوير دفتر ملاحظات Jupyter والبدء في استخدام PySpark من أي مكان.

على سبيل المثال ، إذا قمت بإنشاء دليل ~ / Spark / PySpark_work وعملت من هناك ، يمكنني تشغيل Jupyter:

لكن انتظر ... أين اتصلت فعلاً بشيء مثل pyspark pip install؟

لم أفعل. في الواقع يأتي PySpark مزودًا بحزمة تنزيل Spark وبإعداد مناسب لمتغيرات البيئة وربطها. لذلك أنت كل مجموعة للذهاب الآن.

التالي في هذا الموضوع

أعمل حاليًا على إعداد دليل مفصل لعمليات PySpark DataFrame. إذا كان لديك أي أسئلة أو أفكار لمشاركتها ، فيرجى الاتصال بي على tirthajyoti [AT] gmail.com.

أيضًا ، يمكنك التحقق من مستودعات GitHub الخاصة بي لمعرفة مشاريع أخرى لتعلم الآلة / البيانات في Python أو R أو MATLAB.

إذا كنت مثلي شغوفًا بالتعلم الآلي وعلوم البيانات ، فلا تتردد في إضافة لي على LinkedIn أو متابعتي على Twitter.