توسيع البرامج النصية U-SQL باستخدام تعليمات Python البرمجية في Azure Data Lake Analytics

المتطلبات الأساسية

قبل البدء، تأكد من تثبيت ملحقات Python في حسابك في Azure Data Lake Analytics.

  • الانتقال إلى حساب Data Lake Analytics في مدخل Azure
  • في القائمة اليمنى ، ضمن البدء ، انقر فوق نموذج البرامج النصية
  • انقر فوق تثبيت ملحقات U-SQL ثم موافق

نظرة عامة

تمكن ملحقات Python ل U-SQL المطورين من تنفيذ رمز Python بشكل متواز على نطاق واسع. يوضح المثال التالي الخطوات الأساسية:

  • استخدم العبارة REFERENCE ASSEMBLY لتمكين ملحقات Python للبرنامج النصي U-SQL
  • استخدام العملية REDUCE لتقسيم بيانات الإدخال على مفتاح
  • تتضمن ملحقات Python ل U-SQL مخفضا مضمنا (Extension.Python.Reducer) يقوم بتشغيل رمز Python على كل قمة يتم تعيينها إلى المخفض
  • يحتوي البرنامج النصي U-SQL على التعليمات البرمجية المضمنة ل Python التي تحتوي على دالة تسمى usqlml_main التي تقبل الباندا DataFrame كإدخال وترجع الباندا DataFrame كمخرجات.
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def get_mentions(tweet):
    return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) )
def usqlml_main(df):
    del df['time']
    del df['author']
    df['mentions'] = df.tweet.apply(get_mentions)
    del df['tweet']
    return df
";
@t  =
    SELECT * FROM
       (VALUES
           ("D1","T1","A1","@foo Hello World @bar"),
           ("D2","T2","A2","@baz Hello World @beer")
       ) AS date, time, author, tweet );
@m  =
    REDUCE @t ON date
    PRODUCE date string, mentions string
    USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @m
    TO "/tweetmentions.csv"
    USING Outputters.Csv();

كيف تتكامل بايثون مع U-SQL

أنواع البيانات

  • يتم تحويل الأعمدة الوترية والرقمية من U-SQL كما هي بين الباندا و U-SQL
  • يتم تحويل U-SQL Nulls من وإلى قيم الباندا NA

المخططات

  • متجهات الفهرس في الباندا غير مدعومة في U-SQL. تحتوي جميع إطارات بيانات الإدخال في الدالة Python دائما على فهرس رقمي 64 بت من 0 إلى عدد الصفوف ناقص 1.
  • لا يمكن أن تحتوي مجموعات بيانات U-SQL على أسماء أعمدة مكررة
  • U-SQL أسماء أعمدة مجموعات البيانات التي ليست سلاسل.

إصدارات بايثون

يتم دعم Python 3.5.1 فقط (تم تجميعه Windows).

وحدات بايثون القياسية

يتم تضمين جميع وحدات بايثون القياسية.

وحدات بايثون إضافية

إلى جانب مكتبات بايثون القياسية ، يتم تضمين العديد من مكتبات بايثون شائعة الاستخدام:

  • pandas
  • خدر
  • numexpr

رسائل الاستثناء

حاليا ، يظهر استثناء في رمز Python كفشل قمة عام. في المستقبل، ستعرض رسائل الخطأ U-SQL Job رسالة استثناء بايثون.

قيود حجم المدخلات والمخرجات

كل قمة لديها كمية محدودة من الذاكرة المخصصة لها. حاليا ، هذا الحد هو 6 غيغابايت للاتحاد الأفريقي. نظرا لأن DataFrames للإدخال والإخراج يجب أن يكون موجودا في الذاكرة في التعليمات البرمجية ل Python ، لا يمكن أن يتجاوز الحجم الإجمالي للإدخال والإخراج 6 غيغابايت.

الخطوات التالية