كيفية استخدام دفاتر الملاحظات في Ilum
توضح هذه الصفحة أمثلة متطابقة لدفاتر الملاحظات التي تم تنفيذها في كليهما جوبيتر (متوافق مع JupyterLab و JupyterHub ) و منطاد ، مما يسمح لك بمقارنة كيفية تعيين مهام سير العمل النموذجية بين هذه البيئات بسرعة.
يتم تنظيم كل دفتر ملاحظات في أربعة أقسام منطقية:
- السرد (تخفيض السعر) – Rich text with images introducing the task.
- إنشاء بيانات الاختبار – Python (or Scala) code creating a small synthetic dataset.
- تحويل البيانات – Spark code that cleans or aggregates the data.
- الرسم البياني الديناميكي – 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 بعيدة.
- نواة بايثون – The default Jupyter kernel, which runs Python code on the Jupyter server.
- نواة PySpark – A Spark kernel that runs your Python code on a remote Spark cluster.
- نواة الشرارة – 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.
إنشاء جلسة 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 المحلية للمعالجة والتصور. إليك كيفية تحقيق ذلك:
- تصدير البيانات إلى Local Kernel: استخدم المتغير -o في دفتر الملاحظات أو التعليمات البرمجية لتمرير البيانات من Spark إلى نواة IPython المحلية.
% % شراره - c SQL - o machine_stats
اختار * من الإحصائيات الآلية
- تثبيت حزم التصور المطلوبة: قم بتثبيت أي مكتبات تصور Python ضرورية باستخدام الأمر:
حزمة تثبيت النقطة
على سبيل المثال ، دعنا نعرض البيانات باستخدام Autovizwidget :
من أوتوفيزويجيت . القطعه . المزايد استورد display_dataframe
display_dataframe ( machine_stats )
يسمح بعرض البيانات كأحد المخططات أدناه:
- البارات
- فطيره
- نثر
- منطقة
- جدول
- سطر
- جلسات التنظيف يمكنك تنظيف جلسات Spark بطريقتين:
-
عبر لوحة إدارة جلسات Spark: انتقل إلى الملف إدارة الجلسات وانقر فوق حذف بجوار الجلسة التي تريد إزالتها.
-
عبر لجنة إدارة جلسات سبارك إدارة نقاط النهاية القسم: انتقل إلى قسم إدارة نقاط النهاية، وانقر فوق الزر تنظيف بجوار نقطة نهاية وكيل Ilum Livy.
تتيح لك هذه الخيارات إزالة الجلسات غير الضرورية أو غير النشطة من بيئتك.
نواة Spark و PySpark
تقوم نواة Spark و PySpark بتنفيذ التعليمات البرمجية الخاصة بك مباشرة داخل جلسة Spark. في Ilum، عند إنشاء مستند PySpark أو Spark جديد، Python أو Python مقابل سكالا خدمة الكود أيضا يتم إنشاؤه وتعيينه إلى المستند. سيتم تشغيل التعليمات البرمجية الخاصة بك ضمن هذه الخدمات ، مما يعني أن جلسة Spark مهيأة مسبقا ومتكاملة تماما مع جميع مكونات النظام.
على سبيل المثال، إذا تم تمكين الوحدات النمطية التالية، فستقوم جلسة Spark بما يلي:
- لديك حق الوصول إلى Hive Metastore
- لديك حق الوصول إلى المخازن مرتبط بنظام المجموعة الافتراضي.
- إرسال بيانات حول استخدام الذاكرة واستخدام وحدة المعالجة المركزية ومخطط المراحل إلى خادم التاريخ .
- إعادة توجيه السجلات إلى لوكي استخدام برومتيل .
- عرض مقاييسها على بروميثيوس .
يكمن الاختلاف الرئيسي بين نواة PySpark و Spark في لغة البرمجة:
- نواة PySpark: الاستخدامات بايثون .
- نواة الشرارة: الاستخدامات سكالا .
تظل الأوامر السحرية التي يمكنك استخدامها وسير العمل العام متشابهة إلى حد كبير بين النواتين.
- إنشاء الجلسة
لإنشاء مستند PySpark أو Spark ، انتقل إلى Jupyter ، وانقر فوق الزر + في الزاوية اليسرى العليا واختر النواة

ثم قم بإنشاء خلية ، واكتب شيئا بسيطا هناك وقم بتشغيله.
على سبيل المثال:
طبع ( "مرحبا" )
بعد مرور بعض الوقت ، يجب أن ترى النتيجة التالية:

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

لاحظ أنه تم تنفيذ التعليمات البرمجية الموجودة في الخلية كطلب لخدمة التعليمات البرمجية هذه.
- إدارة الجلسات
لا تحتوي نواة 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. يمكنك استخدامها لتصحيح الأخطاء.
- سير العمل
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 خيط.
- عرض البيانات
في 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 ليس مرنا في إدارة الجلسة. ومع ذلك يمكنك:
- إنهاء خدمة ilum يدويا في كتل:
شراره . وقف ( )
- قم بتعيين مهلة لجلسات العمل الخاملة في تكوينات المترجم الفوري:
zeppelin.livy.idle.timeout=300