حزمة SAS SWAT عبارة عن واجهة Python لمحرك SAS Cloud Analytic Services (CAS) (محور إطار عمل SAS Viya). باستخدام هذه الحزمة، يمكنك تحميل وتحليل مجموعات البيانات بأي حجم على سطح المكتب أو في السحابة. نظرًا لأنه يمكن استخدام CAS على سطح مكتب محلي أو في بيئة سحابية مستضافة، يمكنك تحليل مجموعات كبيرة جدًا من البيانات باستخدام قوة المعالجة التي تحتاجها، مع الحفاظ على سهولة استخدام Python من جانب العميل.
باستخدام SWAT ، يمكنك تنفيذ سير عمل الإجراءات التحليلية لـ CAS ، ثم سحب البيانات الملخصة لإجراء مزيد من المعالجة على جانب العميل في Python، أو للدمج مع البيانات من مصادر أخرى باستخدام هياكل بيانات Pandas المألوفة. في الواقع، تحاكي حزمة SWAT الكثير من واجهة برمجة التطبيقات الخاصة بحزمة Pandas، لذا فإن استخدام CAS يجب أن يكون مألوفًا لمستخدمي Pandas الحاليين.
بفضل أفضل تحليلات SAS في السحابة واستخدام Python ومجموعتها الكبيرة من الحزم مفتوحة المصدر، تمنحك حزمة SWAT إمكانية الوصول إلى أفضل ما في العالمين.
لعرض التحديثات لهذا المشروع، راجع سجل التغيير.
للوصول إلى بروتوكول CAS الثنائي (موصى به)، تحتاج إلى ما يلي:
يتطلب البروتوكول الثنائي مكونات مجمعة مسبقًا موجودة في أداة تثبيت pip
فقط. هذه القطع غير متوفرة ككود مصدر وهي خاضعة لترخيص منفصل (راجع الوثائق الخاصة بـ SAS TK). يقدم البروتوكول الثنائي أداء أفضل من REST، خاصة عند نقل كميات أكبر من البيانات. كما يوفر أيضًا تحميل بيانات أكثر تقدمًا من العميل وميزات تنسيق البيانات.
للوصول إلى واجهة CAS REST فقط، يمكنك استخدام كود Python النقي الذي يعمل في Python 3.7 إلى 3.11 على جميع الأنظمة الأساسية. على الرغم من أنها ليست بنفس سرعة البروتوكول الثنائي، إلا أن واجهة Python النقية أكثر قابلية للنقل.
قد لا تقوم بعض توزيعات Linux بتثبيت كافة المكتبات المشتركة المطلوبة بشكل افتراضي. وأبرزها أن المكتبة المشتركة libnuma.so.1
مطلوبة لإجراء اتصالات بروتوكول ثنائي بـ CAS. إذا لم تكن لديك هذه المكتبة على جهازك، فيمكنك تثبيت حزمة numactl
لتوزيعتك لجعلها متاحة لـ SWAT.
تستخدم حزمة SWAT العديد من ميزات حزمة Pandas Python وتبعيات Pandas الأخرى. إذا لم يكن لديك بالفعل الإصدار 0.16.0 أو أحدث من Pandas مثبتًا، فسيقوم pip
بتثبيته أو تحديثه لك عند تثبيت SWAT.
إذا كنت تستخدم pip
23.1 أو إصدار أحدث للتثبيت من ملف tar.gz، فستكون حزمة python wheel مطلوبة. إذا لم تكن هذه الحزمة مثبتة لديك، فيمكنك تثبيتها باستخدام pip
.
يمكن تثبيت SWAT باستخدام pip
:
pip install swat
يمكنك أيضًا التثبيت من الملفات الموجودة على صفحة إصدارات مشروع SWAT. ما عليك سوى تحديد موقع الملف لنظامك الأساسي وتثبيته باستخدام pip
كما يلي:
pip install https://github.com/sassoftware/python-swat/releases/download/vX.X.X/python-swat-X.X.X-platform.tar.gz
حيث XXX
هو الإصدار الذي تريد تثبيته، platform
هو النظام الأساسي الذي تقوم بالتثبيت عليه. يمكنك أيضًا استخدام توزيع التعليمات البرمجية المصدر إذا كنت تريد فقط استخدام واجهة CAS REST. لا يحتوي على دعم للبروتوكول الثنائي.
للحصول على الوثائق الكاملة، انتقل إلى sassoftware.github.io/python-swat. ويرد مثال بسيط أدناه.
بمجرد تثبيت SWAT ولديك خادم CAS للاتصال به، يمكنك استيراد swat وإنشاء اتصال ::
>>> import swat
>>> conn = swat.CAS(host, port, username, password)
لاحظ أن المنفذ الافتراضي لاتصال Python SWAT هو 5570.
إذا كنت تستخدم الإصدار 1.8.0 من python-swat أو إصدار أحدث للاتصال بخادم SAS Viya 3.5 CAS باستخدام Kerberos، فيجب عليك قبل الاتصال تعيين اسم الخدمة الأساسية (SPN) باستخدام متغير بيئة CASSPN. بالنسبة إلى SAS Viya 3.5، يجب أن تبدأ سلسلة SPN بـ 'sascas@'، متبوعة باسم المضيف.
export CASSPN=sascas@host
إذا تلقيت رسالة خطأ حول روتين دعم TCP/IP negClientSSL ، فمن المحتمل أن يكون لديك مشكلة في تكوين شهادة SSL الخاصة بك. راجع وثائق التشفير لمزيد من المعلومات.
إذا نجح ذلك، فيجب أن تكون قادرًا على تشغيل إجراء على خادم CAS::
>>> out = conn.serverstatus()
NOTE: Grid node action status report: 1 nodes, 6 total actions executed.
>>> print(out)
[About]
{'CAS': 'Cloud Analytic Services',
'Copyright': 'Copyright © 2014-2016 SAS Institute Inc. All Rights Reserved.',
'System': {'Hostname': 'cas01',
'Model Number': 'x86_64',
'OS Family': 'LIN X64',
'OS Name': 'Linux',
'OS Release': '2.6.32-504.12.2.el6.x86_64',
'OS Version': '#1 SMP Sun Feb 1 12:14:02 EST 2015'},
'Version': '3.01',
'VersionLong': 'V.03.01M0D08232016',
'license': {'expires': '20Oct2016:00:00:00',
'gracePeriod': 62,
'site': 'SAS Institute Inc.',
'siteNum': 1,
'warningPeriod': 31}}
[server]
Server Status
nodes actions
0 1 6
[nodestatus]
Node Status
name role uptime running stalled
0 cas01 controller 4.836 0 0
+ Elapsed: 0.0168s, user: 0.016s, sys: 0.001s, mem: 0.287mb
>>> conn.close()
تفاصيل اتفاقية المساهمين حول كيفية تقديم المساهمات للمشروع. تتضمن المساهمة تعليمات وقواعد تتعلق بتقديم المساهمات في المشروع.
يوضح LICENSE.md كيفية إصدار هذه الحزمة وترخيصها.