Пакет SAS SWAT — это интерфейс Python для механизма SAS Cloud Analytic Services (CAS) (центрального элемента инфраструктуры SAS Viya). С помощью этого пакета вы можете загружать и анализировать наборы данных любого размера на своем рабочем столе или в облаке. Поскольку CAS можно использовать на локальном рабочем столе или в размещенной облачной среде, вы можете анализировать чрезвычайно большие наборы данных, используя столько вычислительной мощности, сколько вам нужно, сохраняя при этом простоту использования Python на стороне клиента.
Используя SWAT , вы можете выполнять рабочие процессы аналитических действий CAS , а затем извлекать обобщенные данные для дальнейшей обработки на стороне клиента в Python или объединять их с данными из других источников, используя знакомые структуры данных Pandas. Фактически, пакет SWAT имитирует большую часть API пакета 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. Если у вас еще не установлена версия Pandas 0.16.0 или выше, 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. Он не содержит поддержки двоичного протокола.
Полную документацию можно найти по адресу sasssoftware.github.io/python-swat. Простой пример показан ниже.
После установки SWAT и наличия CAS-сервера для подключения вы можете импортировать SWAT и создать соединение:
>>> import swat
>>> conn = swat.CAS(host, port, username, password)
Обратите внимание, что порт по умолчанию для соединения Python SWAT — 5570.
Если вы используете python-swat версии 1.8.0 или более поздней версии для подключения к серверу CAS SAS Viya 3.5 с использованием 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 указано, как этот пакет выпущен и лицензируется.