توسيع البرامج النصية 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 غيغابايت.