تخطي إلى المحتوى الرئيسي

كيفية استخدام دفاتر الملاحظات في Ilum

توضح هذه الصفحة أمثلة متطابقة لدفاتر الملاحظات التي تم تنفيذها في كليهما جوبيتر (متوافق مع JupyterLab و JupyterHub ) و منطاد ، مما يسمح لك بمقارنة كيفية تعيين مهام سير العمل النموذجية بين هذه البيئات بسرعة.

يتم تنظيم كل دفتر ملاحظات في أربعة أقسام منطقية:

  1. السرد (تخفيض السعر) – Rich text with images introducing the task.
  2. إنشاء بيانات الاختبار – Python (or Scala) code creating a small synthetic dataset.
  3. تحويل البيانات – Spark code that cleans or aggregates the data.
  4. الرسم البياني الديناميكي – An interactive visualization, refreshable after each run.

دليل أجهزة الكمبيوتر المحمولة Jupyter (Lab & Hub)

نظره عامه

في Ilum ، يمكن الوصول إلى دفاتر Jupyter عبر كليهما JupyterLab و JupyterHub . بالنسبة للمستخدمين النهائيين ، تكون التجربة متطابقة وظيفيا في كليهما ، خاصة عند العمل مع تكامل Spark و Ilum.

بشكل افتراضي، يتم تنفيذ خلايا التعليمات البرمجية ل Python محليا على خادم Jupyter. للاستفادة من Spark على مجموعة بعيدة ، تحتاج إلى استخدام سبارك ماجيك —a Jupyter extension that enables code execution on a Spark cluster through the Livy API. In Ilum, the default Livy API is replaced with إيلوم ليفي وكيل , which ensures seamless integration with Ilum’s storage, metastore, lineage, and monitoring features.

يوفر Jupyter (كل من Lab و Hub) أربع نواة أساسية:

نواة بايثون: نواة Jupyter الافتراضية، التي تشغل كود Python على خادم Jupyter. PySpark Kernel: نواة Spark التي تقوم بتشغيل كود Python الخاص بك على مجموعة Spark بعيدة. Spark Kernel: نواة Scala التي تقوم بتشغيل كود Scala الخاص بك على مجموعة Spark بعيدة.

  1. نواة بايثون – The default Jupyter kernel, which runs Python code on the Jupyter server.
  2. نواة PySpark – A Spark kernel that runs your Python code on a remote Spark cluster.
  3. نواة الشرارة – A Scala kernel that runs your Scala code on a remote Spark cluster.

إدارة جلسات Spark

لاستخدام مجموعة Spark بعيدة من نواة Python قياسية، قم أولا بتحميل Spark Magic:

% load_ext سباركماجيك . السحر 

بعد ذلك، افتح لوحة إدارة جلسة Spark:

% manage_spark 

باستخدام هذه اللوحة ، يمكنك تنفيذ المهام التالية:

إدارة الجلسات

ال إدارة الجلسات تعرض علامة التبويب جميع جلسات Spark المتاحة. هنا يمكنك رؤية اسم الجلسة والمعرف ونوع kernel (على سبيل المثال ، pyspark ل Python) وحالتها الحالية. يمكنك أيضا حذف الجلسات التي لم تعد بحاجة إليها.

إدارة الجلسات

إنشاء جلسة

ال إنشاء جلسة تسمح لك علامة التبويب ببدء جلسة Spark جديدة. لإنشاء جلسة، أدخل اسما لجلستك، وحدد لغة (Scala أو Python)، وحدد معلمات Spark. أخيرا ، انقر فوق إنشاء جلسة .
[يمكن الاطلاع على التفاصيل الكاملة عن إنشاء الجلسة والمعلمات المتاحة هنا .]

إنشاء جلسة

إضافة نقطة نهاية

في المربع إضافة نقطة نهاية علامة التبويب ، يمكنك تسجيل نقاط نهاية Livy إضافية. اختر نوع المصادقة (على سبيل المثال، Kerberos) وأدخل عنوان خادم Livy، ثم انقر على إضافة نقطة نهاية . يكون هذا مفيدا إذا كنت بحاجة إلى الاتصال بنشر Livy مخصص بدلا من نقطة نهاية Ilum-Livy-Proxy التي تم تكوينها مسبقا.

إضافة نقطة نهاية

إدارة نقاط النهاية

ال إدارة نقاط النهاية تسرد علامة التبويب جميع نقاط نهاية Livy التي تم تكوينها، إلى جانب جميع جلسات Spark النشطة أو التاريخية المرتبطة بها. يمكنك عرض تفاصيل الجلسة، بما في ذلك معرفات الجلسة وروابط Spark UI وسجلات برنامج التشغيل. يمكنك أيضا إزالة نقاط النهاية أو تنظيف الجلسات القديمة مباشرة من هذه اللوحة.

إدارة نقاط النهاية

صفحة أحمال عمل Ilum

بعد إنشاء جلسة، يمكنك تعقب خدمات التعليمات البرمجية النشطة الخاصة بك في صفحة أحمال عمل Ilum. تتم تسمية الخدمات التي تم إنشاؤها عبر جلسات Spark Magic بالبادئة جلسة الوكيل ILUM-LIVY- ويمكن مراقبتها أو إيقافها مؤقتا أو حذفها تماما مثل أي خدمة أخرى من خدمات Illum.

صفحة أحمال عمل Ilum

إنشاء جلسة Spark

لإنشاء جلسة Spark جديدة، افتح لوحة الإدارة وحدد إنشاء جلسة .
سيطلب منك ملء نموذج يحتوي على المعلمات التالية:

الإعدادات الأساسية:

  • نقطه النهايه
    عنوان نقطة نهاية Livy المستخدم للاتصال بمجموعة Spark. يتم تكوين هذا الحقل تلقائيا، ولكن إذا لزم الأمر، يمكنك إضافة نقطة نهاية إلى خدمة Livy الخاصة بك.

  • عنقود
    اسم مجموعة Kubernetes حيث سيتم تشغيل الجلسة.

  • اسم الجلسة
    اسم مخصص لجلسة Spark الخاصة بك، يستخدم لتحديد الهوية.

  • اللغة
    لغة البرمجة لجلسة Spark: بايثون أو سكالا .

  • صورة شرارة
    صورة Docker التي تحدد بيئة وقت تشغيل Spark (على سبيل المثال، ILUM / شرارة: 3.5.6-دلتا ).
    يمكنك أيضا استخدام صورك المخصصة ، ولكن من أجل التوافق الكامل ، نوصي ببنائها فوق صور قاعدة Spark الرسمية التي نشرتها ILUM على مركز عامل الإرساء .

  • باقات إضافية
    حزم Python إضافية للتثبيت في الجلسة.
    مثل: خدر. الباندا

  • تمكين الإيقاف المؤقت التلقائي
    إيقاف الجلسة مؤقتا تلقائيا عندما تكون خاملة. بعد وقت الخمول الذي تم تكوينه، تظل الجلسة متاحة، ولكن الطلب الأول سيبدأ الجراب (الجرابون) والمنفذين قبل تنفيذ التعليمات البرمجية الخاصة بك، مما يؤدي إلى وقت انتظار أطول قليلا للأمر الأول.
    تتم إدارة إعدادات الإيقاف المؤقت التلقائي بشكل عام عبر قيم Helm:

    • --set ilum-core.job.autoPause.idleTime=3600 يتحكم في وقت الخمول (بالثواني) وبعد ذلك يتم إيقاف المجموعة مؤقتا ،
    • --set ilum-core.job.autoPause.period=180 يتحكم في عدد المرات (بالثواني) يتم التحقق من حالة الخمول.

إعدادات المنفذ:

  • ذاكرة المنفذ
    مقدار ذاكرة الوصول العشوائي المخصصة لكل منفذ Spark (على سبيل المثال ، 2 جرام ).
    الوحدات المدعومة: M (ميغابايت) ، G (غيغابايت) ، T (تيرابايت).

  • النوى المنفذة
    عدد نوى وحدة المعالجة المركزية لكل منفذ.

  • عدد المنفذين
    إجمالي عدد المنفذين الذين سيبدأون في الجلسة.

إعدادات برنامج التشغيل:

  • ذاكرة السائق
    مقدار ذاكرة الوصول العشوائي المخصصة لعملية برنامج تشغيل Spark (على سبيل المثال ، 1 جرام ).
    الوحدات المدعومة: M (ميغابايت) ، G (غيغابايت) ، T (تيرابايت).

  • نوى السائق
    عدد نوى وحدة المعالجة المركزية لبرنامج تشغيل Spark.

المزيد من الخيارات المتقدمة:

  • تكوين Spark المخصص
    تكوين Spark إضافي ككائن JSON.
    هذا الحقل يعادل الحقل خصائص في إصدار Sparkmagic القديم.
    مهم: ستتجاوز أي معلمة متوفرة في هذا الحقل خاصية Spark المقابلة من الحقول الأخرى، لذا استخدمها بحذر.
    مثل: { "spark.sql.shuffle.partitions": "200" }

  • ملحق SQL
    اسم فئة ملحق Spark SQL ، غالبا ما يكون مطلوبا ل Delta Lake و Hudi و Nessie وما إلى ذلك.
    مثل: io.delta.sql.DeltaSparkSessionExtension

  • خيارات جافا إضافية للسائق
    تم تمرير خيارات Java الإضافية إلى عملية برنامج تشغيل Spark.
    مثل: -Divy.cache.dir=/tmp -Divy.home=/tmp

  • خيارات Java الإضافية للمنفذ
    تم تمرير خيارات Java الإضافية إلى منفذي Spark.
    مثل: -Dconfig=قيمة

  • التخصيص الديناميكي
    تمكين تخصيص موارد Spark الديناميكي للمنفذين.
    ملاحظه: يتم تطبيق جميع الخيارات أدناه فقط في حالة تمكين التخصيص الديناميكي.

    • الحد الأدنى للمنفذين
      الحد الأدنى لعدد المنفذين.

    • المنفذون الأوليون
      العدد الأولي للمنفذين الذين سيتم إطلاقهم عند بدء الجلسة.

    • ماكس المنفذين
      الحد الأقصى لعدد المنفذين المسموح بهم أثناء التخصيص الديناميكي.

    • أقسام المراوغة
      عدد الأقسام المستخدمة لعمليات التبديل العشوائي في Spark SQL.

يتم عزل الجلسات لكل دفتر ملاحظات، مما يعني أن كل دفتر ملاحظات مفتوح له بيئته الحسابية المستقلة الخاصة به. عند تشغيل خلية Spark في نواة Python ووجود جلسات عمل متعددة نشطة، يجب عليك تحديد جلسة Spark التي تريد استخدامها.

يوفر استخدام Ilum Code Services بدلا من نواة pyspark المحلية العديد من المزايا. يقوم Ilum تلقائيا بتكوين جميع جلسات Jupyter مسبقا للتكامل بسلاسة مع وحدات البنية التحتية الخاصة بك. على سبيل المثال، يتم تكوين الجلسات مسبقا للوصول إلى جميع وحدات التخزين المرتبطة بنظام المجموعة الافتراضي. إذا تم تمكين المكونات المقابلة، فستقوم جلسات Spark بما يلي:

  • قم بالوصول إلى Hive Metastore.
  • إرسال البيانات إلى Ilum Lineage.
  • إرسال البيانات إلى خادم المحفوظات للمراقبة.
  • استفد من الوظائف الإضافية التي يوفرها Ilum.

ولن تحتاج إلى كتابة تكوينات لذلك يدويا.

العمل مع Jupyter

بعد الإعداد ، لتنفيذ التعليمات البرمجية الخاصة بك داخل خدمة كود إيلوم ، يجب عليك استخدام الرمز ٪٪شرارة الأمر السحري. يسمح لك هذا الأمر السحري بتشغيل التعليمات البرمجية الخاصة بك في بيئة Spark البعيدة التي يديرها Ilum.

% % شراره 

# مثال على البيانات
# ...

ضمن هذه البيئة، يمكنك الوصول إلى جميع المتغيرات التي تم إنشاؤها هناك، بالإضافة إلى سياقات Spark التالية:

  • sc (SparkContext)
  • sqlContext (HiveContext)
  • شرارة (SparkSession)

يضمن هذا الإعداد التفاعل السلس مع موارد Spark وأي تكوينات توفرها منصة Ilum.

مثال بايثون:

% % شراره 

بيانات = [
( 1 , "N1-قياسي-1" , 20.5 , 32.1 , 15.0 ) ,
( 2 , "N1-قياسي-1" , 30.0 , 64.3 , 20.0 ) ,
( 3 , "N1-قياسي -2" , 30.2 , 16.0 , 22.0 ) ,
( 4 , "N1-قياسي -2" , 45.1 , 128.5 , 40.2 ) ,
( 5 , "E2-متوسط" , 25.4 , 8.0 , 18.3 ) ,
( 6 , "E2-متوسط" , 25.3 , 12.0 , 10.2 ) ,
( 7 , "E2-Standard-2" , 29.8 , 24.5 , 14.7 ) ,
( 8 , "E2-Standard-2" , 35.0 , 24.5 , 20.5 ) ,
( 9 , "N2-HighCPU-4" , 50.2 , 64.0 , 30.4 ) ,
( 10 , "N2-HighCPU-4" , 55.1 , 16.0 , 35.4 ) ,
( 11 , "N1-قياسي -8" , 80.5 , 32.0 , 45.6 ) ,
( 12 , "N1-قياسي -16" , 95.1 , 128.0 , 60.0 ) ,
( 13 , "N1-قياسي -8" , 85.0 , 256.0 , 90.0 ) ,
( 14 , "N1-highmem-2" , 40.1 , 128.0 , 50.0 ) ,
( 15 , "T2A-Standard-1" , 15.2 , 2.0 , 5.5 ) ,
( 16 , "T2A-Standard-2" , 25.5 , 4.0 , 7.3 ) ,
( 17 , "N1-highmem-2" , 60.5 , 256.0 , 100.0 ) ,
( 18 , "C2-Standard-16" , 99.9 , 6240.0 , 120.5 ) ,
( 19 , "A2-HighGPU-1G" , 89.2 , 256.0 , 95.4 ) ,
( 20 , "A2-HighGPU-1G" , 100.0 , 40.0 , 110.0 ) ,
]

#using سياق شرارة
القضبان = SC . موازاة ( بيانات )

مسار البيانات = "s3a://ilum-files/data/performance"
القضبان . saveAsTextFile ( مسار البيانات )


جلسة #using شرارة
مدافع = شراره . قرأ . CSV ( مسار البيانات )
مدافع . createOrReplaceTempView ( "MachinesTemp" )
نتيجة = شراره . SQL ( "حدد \
_c0 مثل machine_id , \
_c1 مثل machine_type , \
_c2 مثل cpu_usage , \
_c3 مثل memory_usage , \
_c4 مثل time_spent \
من MachinesTemp" )

نتيجة . createOrReplaceTempView ( "إحصائيات الآلة" )

نتيجة . عرض ( )

مثال سكالا:

% % شراره 
valبيانات = Seq(
( 1 , "N1-قياسي-1" , 20.5 , 32.1 , 15.0 ) ,
( 2 , "N1-قياسي-1" , 30.0 , 64.3 , 20.0 ) ,
( 3 , "N1-قياسي -2" , 30.2 , 16.0 , 22.0 ) ,
( 4 , "N1-قياسي -2" , 45.1 , 128.5 , 40.2 ) ,
( 5 , "E2-متوسط" , 25.4 , 8.0 , 18.3 ) ,
( 6 , "E2-متوسط" , 25.3 , 12.0 , 10.2 ) ,
( 7 , "E2-Standard-2" , 29.8 , 24.5 , 14.7 ) ,
( 8 , "E2-Standard-2" , 35.0 , 24.5 , 20.5 ) ,
( 9 , "N2-HighCPU-4" , 50.2 , 64.0 , 30.4 ) ,
( 10 , "N2-HighCPU-4" , 55.1 , 16.0 , 35.4 ) ,
( 11 , "N1-قياسي -8" , 80.5 , 32.0 , 45.6 ) ,
( 12 , "N1-قياسي -16" , 95.1 , 128.0 , 60.0 ) ,
( 13 , "N1-قياسي -8" , 85.0 , 256.0 , 90.0 ) ,
( 14 , "N1-highmem-2" , 40.1 , 128.0 , 50.0 ) ,
( 15 , "T2A-Standard-1" , 15.2 , 2.0 , 5.5 ) ,
( 16 , "T2A-Standard-2" , 25.5 , 4.0 , 7.3 ) ,
( 17 , "N1-highmem-2" , 60.5 , 256.0 , 100.0 ) ,
( 18 , "C2-Standard-16" , 99.9 , 6240.0 , 120.5 ) ,
( 19 , "A2-HighGPU-1G" , 89.2 , 256.0 , 95.4 ) ,
( 20 , "A2-HighGPU-1G" , 100.0 , 40.0 , 110.0 )
)

استخدام سياق Spark
valالقضبان = شراره . sparkContext . موازاة ( بيانات )

valمسار البيانات = "s3a://ilum-files/data/performance"
القضبان . saveAsTextFile ( مسار البيانات )

استخدام جلسة Spark
valمدافع = شراره . قرأ . خيار ( "header", "خطأ" ) . CSV ( مسار البيانات )

مدافع . createOrReplaceTempView ( "MachinesTemp" )

valنتيجة = شراره . SQL ( """
اختار
_c0 كما machine_id ،
_c1 machine_type ،
_c2 cpu_usage ،
_c3 memory_usage ،
_c4 time_spent
من الآلات درجة الحرارة
""")


نتيجة . createOrReplaceTempView ( "إحصائيات الآلة" )

نتيجة . عرض ( )

يمكنك حول بين دورات في خلاياك باستخدام وضع علامة على الجلسة التي تريد اختيارها واسمها.

% % شراره - ق SESSION_NAME 

#your كود شرارة بايثون
# ...

على سبيل المثال، إذا كانت لديك قائمة الجلسات هذه:

إيلوم

أين mysession من نوع الشرارة التي تستخدم لغة Scala. هذا يعني أنه إذا كنت تريد استخدام جلسة scala spark هذه عليك اختيار الجلسة مثل هذا:

% % شراره - s scalasession

جلسات python من نوع pyspark الذي يستخدم لغة Python. هذا يعني أنه إذا كنت تريد استخدام جلسة Python spark عليك أن تختار الجلسة مثل هذه

% % شراره - S pythonsession 

يمكنك إطلاق استعلامات SQL في كتالوج Spark الخاص بك باستخدام ٪٪شرارة السحر مع -سي إس كيو إل :

% % شراره - c SQL 
اختار * من الإحصائيات الآلية

يمكنك استخدام علامات متعددة باستخدام الأمر SQL في الزر خدمة كود علم وسط:

  • -o: يحدد متغير البيئة المحلية الذي سيخزن نتيجة الاستعلام. هذا هو الحل الأفضل لتمرير البيانات بين الجلسات.
  • -n أو --maxrows: يحدد الحد الأقصى لعدد الصفوف المراد إرجاعها من الاستعلام.
  • -q أو --quiet: يحدد ما إذا كان سيتم عرض الإخراج في المستند. إذا تم تحديدها، فلن تظهر النتيجة.
  • -f أو --samplefraction: يضبط كسر النتيجة للعودة عند أخذ العينات.
  • -m أو --samplemethod: يحدد طريقة أخذ العينات المراد استخدامها، إما أخذها أو أخذ عيناتها.

توفر هذه العلامات المرونة في إدارة نتائج الاستعلام والتحكم في سلوك الإخراج عند العمل مع Spark في بيئة Ilum.

على سبيل المثال:

% % شراره - S pythonsession - c SQL  - o test_result - q - ماكسروس 10 
اختار machine_type , متوسط ( memory_usage ) مثل avg_memory_usage من الإحصائيات الآلية مجموعة ب machine_type
test_result 

يجب أن تبدو النتيجة كما يلي:

إيلوم

عرض البيانات

غالبا ما تواجه جلسات PySpark و Spark مشكلات في التوافق مع حزم المرئيات المتقدمة. الحل العملي هو نقل البيانات إلى نواة IPython المحلية للمعالجة والتصور. إليك كيفية تحقيق ذلك:

  1. تصدير البيانات إلى Local Kernel: استخدم المتغير -o في دفتر الملاحظات أو التعليمات البرمجية لتمرير البيانات من Spark إلى نواة IPython المحلية.
% % شراره - c SQL  - o machine_stats 
اختار * من الإحصائيات الآلية

  1. تثبيت حزم التصور المطلوبة: قم بتثبيت أي مكتبات تصور Python ضرورية باستخدام الأمر:
حزمة تثبيت النقطة 

على سبيل المثال ، دعنا نعرض البيانات باستخدام Autovizwidget :

من أوتوفيزويجيت . القطعه . المزايد استورد display_dataframe 
display_dataframe ( machine_stats )

يسمح بعرض البيانات كأحد المخططات أدناه:

  • البارات
  • فطيره
  • نثر
  • منطقة
  • جدول
  • سطر
  1. جلسات التنظيف يمكنك تنظيف جلسات Spark بطريقتين:
  • عبر لوحة إدارة جلسات Spark: انتقل إلى الملف إدارة الجلسات وانقر فوق حذف بجوار الجلسة التي تريد إزالتها.

  • عبر لجنة إدارة جلسات سبارك إدارة نقاط النهاية القسم: انتقل إلى قسم إدارة نقاط النهاية، وانقر فوق الزر تنظيف بجوار نقطة نهاية وكيل Ilum Livy.

تتيح لك هذه الخيارات إزالة الجلسات غير الضرورية أو غير النشطة من بيئتك.

نواة Spark و PySpark

تقوم نواة Spark و PySpark بتنفيذ التعليمات البرمجية الخاصة بك مباشرة داخل جلسة Spark. في Ilum، عند إنشاء مستند PySpark أو Spark جديد، Python أو Python مقابل سكالا خدمة الكود أيضا يتم إنشاؤه وتعيينه إلى المستند. سيتم تشغيل التعليمات البرمجية الخاصة بك ضمن هذه الخدمات ، مما يعني أن جلسة Spark مهيأة مسبقا ومتكاملة تماما مع جميع مكونات النظام.

على سبيل المثال، إذا تم تمكين الوحدات النمطية التالية، فستقوم جلسة Spark بما يلي:

  • لديك حق الوصول إلى Hive Metastore
  • لديك حق الوصول إلى المخازن مرتبط بنظام المجموعة الافتراضي.
  • إرسال بيانات حول استخدام الذاكرة واستخدام وحدة المعالجة المركزية ومخطط المراحل إلى خادم التاريخ .
  • إعادة توجيه السجلات إلى لوكي استخدام برومتيل .
  • عرض مقاييسها على بروميثيوس .

يكمن الاختلاف الرئيسي بين نواة PySpark و Spark في لغة البرمجة:

  • نواة PySpark: الاستخدامات بايثون .
  • نواة الشرارة: الاستخدامات سكالا .

تظل الأوامر السحرية التي يمكنك استخدامها وسير العمل العام متشابهة إلى حد كبير بين النواتين.

  1. إنشاء الجلسة

لإنشاء مستند PySpark أو Spark ، انتقل إلى Jupyter ، وانقر فوق الزر + في الزاوية اليسرى العليا واختر النواة

إيلوم

ثم قم بإنشاء خلية ، واكتب شيئا بسيطا هناك وقم بتشغيله.

على سبيل المثال:

طبع ( "مرحبا" ) 

بعد مرور بعض الوقت ، يجب أن ترى النتيجة التالية:

إيلوم

إذا انتقلت إلى الزر عبء العمل ، سترى خدمة تعليمات برمجية جديدة تم إنشاؤها في نظام المجموعة الافتراضي. سيكون لخدمة التعليمات البرمجية هذه اسم مسبوق ب جلسة الوكيل ILUM-LIVY- ، مما يشير إلى أنه مرتبط بجلسة Spark أو PySpark التي قمت بإنشائها للتو.

إيلوم

لاحظ أنه تم تنفيذ التعليمات البرمجية الموجودة في الخلية كطلب لخدمة التعليمات البرمجية هذه.

  1. إدارة الجلسات

لا تحتوي نواة Spark و PySpark على لوحة إدارة مشابهة ل sparkmagics. ومع ذلك ، يمكنك استخدام الأوامر السحرية لنفس الوظيفة.

استخدام ٪٪configure السحر لتعيين معلمات الشرارة لجلستك باستخدام تنسيق JSON

على سبيل المثال، كتابة هذا الرمز في خليتك:

٪٪configure -f 
{
"spark.sql. الامتدادات" : "io.delta.sql.DeltaSparkSessionExtension" ,
"spark.sql.catalog.spark_catalog" : "org.apache.spark.sql.delta.catalog.DeltaCatalog" ,
"spark.databricks.delta.catalog.update.enabled" : صحيح
}

ستمكن دلتا في جلسة Spark الخاصة بك

إنه إلزامي للاستخدام لأنه يجبر Ilum على إعادة تشغيل الجلسة في حالة تشغيلها بالفعل

استخدام ٪٪info السحر للحصول على معلومات حول جلسات الشرارة النشطة في Livy.

إيلوم

استخدام ٪٪حذف -f -s ID لحذف الجلسات باستخدام بطاقة الهوية الخاصة بهم. لا يمكنك حذف جلسة عمل kernel الحالية

على سبيل المثال:

٪٪حذف -f -s 16 

استخدام ٪٪تنظيف -f لحذف كل الجلسة في نقطة النهاية الحالية (في وكيل Ilum Livy)

استخدام ٪٪سجلات للحصول على السجلات المتعلقة بجلسة Spark. يمكنك استخدامها لتصحيح الأخطاء.

  1. سير العمل

If you want to write a Spark program, you don’t need to use any magics. Simply type your code into a cell and execute it.

في PySpark Kernel (python):

بيانات =  [ 
( 1 , "N1-قياسي-1" , 20.5 , 32.1 , 15.0 ) ,
( 2 , "N1-قياسي-1" , 30.0 , 64.3 , 20.0 ) ,
( 3 , "N1-قياسي -2" , 30.2 , 16.0 , 22.0 ) ,
( 4 , "N1-قياسي -2" , 45.1 , 128.5 , 40.2 ) ,
( 5 , "E2-متوسط" , 25.4 , 8.0 , 18.3 ) ,
( 6 , "E2-متوسط" , 25.3 , 12.0 , 10.2 ) ,
( 7 , "E2-Standard-2" , 29.8 , 24.5 , 14.7 ) ,
( 8 , "E2-Standard-2" , 35.0 , 24.5 , 20.5 ) ,
( 9 , "N2-HighCPU-4" , 50.2 , 64.0 , 30.4 ) ,
( 10 , "N2-HighCPU-4" , 55.1 , 16.0 , 35.4 ) ,
( 11 , "N1-قياسي -8" , 80.5 , 32.0 , 45.6 ) ,
( 12 , "N1-قياسي -16" , 95.1 , 128.0 , 60.0 ) ,
( 13 , "N1-قياسي -8" , 85.0 , 256.0 , 90.0 ) ,
( 14 , "N1-highmem-2" , 40.1 , 128.0 , 50.0 ) ,
( 15 , "T2A-Standard-1" , 15.2 , 2.0 , 5.5 ) ,
( 16 , "T2A-Standard-2" , 25.5 , 4.0 , 7.3 ) ,
( 17 , "N1-highmem-2" , 60.5 , 256.0 , 100.0 ) ,
( 18 , "C2-Standard-16" , 99.9 , 6240.0 , 120.5 ) ,
( 19 , "A2-HighGPU-1G" , 89.2 , 256.0 , 95.4 ) ,
( 20 , "A2-HighGPU-1G" , 100.0 , 40.0 , 110.0 ) ,
]

#using سياق شرارة
القضبان = SC . موازاة ( بيانات )

مسار البيانات = "s3a://ilum-files/data/performance"
القضبان . saveAsTextFile ( مسار البيانات )


جلسة #using شرارة
مدافع = شراره . قرأ . CSV ( مسار البيانات )
مدافع . createOrReplaceTempView ( "MachinesTemp" )
نتيجة = شراره . SQL ( "حدد \
_c0 مثل machine_id , \
_c1 مثل machine_type , \
_c2 مثل cpu_usage , \
_c3 مثل memory_usage , \
_c4 مثل time_spent \
من MachinesTemp" )

نتيجة . createOrReplaceTempView ( "إحصائيات الآلة" )

نتيجة . عرض ( )

في Spark Kernel (Scala):

valبيانات =  Seq( 
( 1 , "N1-قياسي-1" , 20.5 , 32.1 , 15.0 ) ,
( 2 , "N1-قياسي-1" , 30.0 , 64.3 , 20.0 ) ,
( 3 , "N1-قياسي -2" , 30.2 , 16.0 , 22.0 ) ,
( 4 , "N1-قياسي -2" , 45.1 , 128.5 , 40.2 ) ,
( 5 , "E2-متوسط" , 25.4 , 8.0 , 18.3 ) ,
( 6 , "E2-متوسط" , 25.3 , 12.0 , 10.2 ) ,
( 7 , "E2-Standard-2" , 29.8 , 24.5 , 14.7 ) ,
( 8 , "E2-Standard-2" , 35.0 , 24.5 , 20.5 ) ,
( 9 , "N2-HighCPU-4" , 50.2 , 64.0 , 30.4 ) ,
( 10 , "N2-HighCPU-4" , 55.1 , 16.0 , 35.4 ) ,
( 11 , "N1-قياسي -8" , 80.5 , 32.0 , 45.6 ) ,
( 12 , "N1-قياسي -16" , 95.1 , 128.0 , 60.0 ) ,
( 13 , "N1-قياسي -8" , 85.0 , 256.0 , 90.0 ) ,
( 14 , "N1-highmem-2" , 40.1 , 128.0 , 50.0 ) ,
( 15 , "T2A-Standard-1" , 15.2 , 2.0 , 5.5 ) ,
( 16 , "T2A-Standard-2" , 25.5 , 4.0 , 7.3 ) ,
( 17 , "N1-highmem-2" , 60.5 , 256.0 , 100.0 ) ,
( 18 , "C2-Standard-16" , 99.9 , 6240.0 , 120.5 ) ,
( 19 , "A2-HighGPU-1G" , 89.2 , 256.0 , 95.4 ) ,
( 20 , "A2-HighGPU-1G" , 100.0 , 40.0 , 110.0 )
)

valالقضبان = شراره . sparkContext . موازاة ( بيانات )

valمسار البيانات = "s3a://ilum-files/data/performance"
القضبان . saveAsTextFile ( مسار البيانات )

valمدافع = شراره . قرأ . خيار ( "header", "خطأ" ) . CSV ( مسار البيانات )

مدافع . createOrReplaceTempView ( "MachinesTemp" )

valنتيجة = شراره . SQL ( """
اختار
_c0 كما machine_id ،
_c1 machine_type ،
_c2 cpu_usage ،
_c3 memory_usage ،
_c4 time_spent
من الآلات درجة الحرارة
""")


نتيجة . createOrReplaceTempView ( "إحصائيات الآلة" )

نتيجة . عرض ( )

للاستخدام شرارة SQL ، يمكنك استخدام ٪٪sql الأمر السحري، الذي يعمل بشكل مشابه لكيفية عمله في نواة Python باستخدام سحر Spark.

للمثال:

% % SQL 
اختار * من الإحصائيات الآلية

يمكنك أيضا استخدام علامات متعددة مع ٪٪sql لتخصيص سلوكها:

  • يحدد متغير البيئة المحلية الذي سيخزن نتيجة الاستعلام.:
  • أو - ماكسروس تعيين الحد الأقصى لعدد الصفوف للعودة من الاستعلام.:
  • أو --هدوء يتحكم في ما إذا كان الإخراج معروضا في المستند.: إذا تم تحديدها، فلن تظهر النتيجة.
  • أو - كسر العينة يحدد كسر مجموعة النتائج المراد إرجاعها عند أخذ العينات.:
  • أو --samplemethod : Specifies the sampling method to use—either take or sample.

على سبيل المثال:

% % SQL  - o test_result - q - ماكسروس 10 
اختار machine_type , متوسط ( memory_usage ) مثل avg_memory_usage من الإحصائيات الآلية مجموعة ب machine_type

لن ترى أي نتائج لتشغيل هذه الخلية، ولكن سيتم حفظها في test_result قابل للحماية محليا ويمكن استرداده باستخدام ٪٪محلي سحر:

٪٪محلي 
test_result

ال ٪٪محلي magic command is used to execute code in a local environment. This can be useful when you don’t want to occupy the Spark environment for tasks that don’t require its resources.

في حالة رغبتك في استخدام قيمة من البيئة المحلية في جلسة spark ، يجب عليك استخدام ٪٪send_to_spark سحر.

٪٪send_to_spark -i قيمة -n اسم -t نوع 

هنا يمكنك تحديد القيمة التي تريد إرسالها ونوع بياناتها واسم المتغير الذي سيتم تعيينه له في جلسة spark.

على سبيل المثال:

% % محلي 
s = u"abc ሴ def"
٪٪send_to_spark -i s -n s -t str 
طبع ( s ) 

يجب أن يؤدي تشغيل هذه الخلايا الثلاثة إلى طباعة s خيط.

  1. عرض البيانات

في Spark وPySpark، يمكن عرض إطارات بيانات kernel التي تم استردادها باستخدام أوامر SQL أو إطارات بيانات pandas ك

  • جدول
  • فطيره
  • البارات
  • مخطط خطي
  • نثر
  • منطقة

على سبيل المثال:

إيلوم

بالنسبة لإطارات بيانات الشرارة ، يمكنك استخدامها ٪٪جميلة السحر لعرضها بتنسيق أكثر متعة:

٪٪جميلة 
result.show()

إيلوم

دليل زيبلين

في Zeppelin ، لا يمكنك التحكم في جلسات الشرارة ، يتم إنشاؤها وإدارتها تلقائيا. بشكل افتراضي لكل دفتر ملاحظات هناك واحد منفصل ل ٪livy.spark ، واحد ل ٪livy.pyspark وواحد ل %livy.sql . في تكوينات المترجم الفوري يمكنك تغيير هذا.

إنشاء دفتر ملاحظات باستخدام محرك Livy

كما ذكرنا سابقا ، يستخدم Ilum Ilum-Livy-Proxy لربط جلسة spark من Zeppelin بخدمة Ilum. لذلك يجب عليك الاختيار محركات ليفي عند العمل مع الشرارة.

اكتب كود شرارة في scala

استخدام ٪livy.spark

إيلوم

اكتب كود شرارة في pyspark

استخدام ٪livy.pyspark

إيلوم

كتابة عبارات spark sql

استخدام %livy.sql

إيلوم

استفد من المرئيات المضمنة

عند تشغيل عبارات sql التي ترجع الصفوف، يمكنك تصورها

إيلوم

إدارة دورة حياة الجلسات

لسوء الحظ ، فإن zeppelin ليس مرنا في إدارة الجلسة. ومع ذلك يمكنك:

  1. إنهاء خدمة ilum يدويا في كتل:
شراره . وقف ( ) 
  1. قم بتعيين مهلة لجلسات العمل الخاملة في تكوينات المترجم الفوري:
zeppelin.livy.idle.timeout=300