Использование ODBC для сохранения и загрузки объектов R в Службах машинного обучения SQL Server
Применимо к: SQL Server 2016 (13.x); и более поздние версии
Узнайте, как использовать пакет RevoScaleR для хранения сериализованных объектов R в таблице и их загрузки из таблицы по мере необходимости с помощью Служб машинного обучения SQL Server. Эту возможность можно использовать при обучении и сохранении модели, которая затем применяется для оценки или анализа.
Пакет RevoScaleR
Пакет RevoScaleR включает функции сериализации и десериализации, которые могут передавать объекты R в SQL Server в компактной форме, а затем считывать их из таблицы. В общем случае каждый вызов функции использует простое хранилище значений ключей, в котором ключ является именем объекта, а значение, сопоставленное с этим ключом, является объектом R типа varbinary, перемещаемым в таблицу или из нее.
Чтобы сохранить объекты R напрямую в SQL Server непосредственно из среды R, нужно:
- установить подключение к SQL Server с помощью источника данных RxOdbcData;
- вызвать новые функции через подключение ODBC;
- при необходимости указать, что объект не сериализуется, а затем выбрать новый алгоритм сжатия для использования вместо алгоритма по умолчанию.
По умолчанию любой объект, вызываемый из R для перемещения в SQL Server, сериализуется и сжимается. И наоборот, при загрузке объекта из таблицы SQL Server для использования в коде R объект десериализуется и распаковывается.
Список новых функций
rxWriteObject
записывает объект R в SQL Server с помощью источника данных ODBC.rxReadObject
считывает объект R из базы данных SQL Server с помощью источника данных ODBC.rxDeleteObject
удаляет объект R из базы данных SQL Server, указанной в источнике данных ODBC. Если существует несколько объектов, на которые указывает сочетание ключа и версии, все они удаляются.rxListKeys
указывает все доступные объекты в виде пар "ключ — значение". Это помогает определить имена и версии объектов R.
Для получения подробных сведений о синтаксисе каждой функции воспользуйтесь справкой R. Позже подробные сведения также приведены в статье ScaleR reference (Справочник по ScaleR).
Сохранение объектов R в SQL Server с помощью ODBC
Эта процедура демонстрирует, как использовать новые функции для создания модели и ее сохранения в SQL Server.
Настройте строку подключения для SQL Server.
conStr <- 'Driver={SQL Server};Server=localhost;Database=storedb;Trusted_Connection=true'
Создайте объект источника данных rxOdbcData в R с помощью этой строки подключения.
ds <- RxOdbcData(table="robjects", connectionString=conStr)
Удалите таблицу, если она уже существует и не требуется отслеживать старые версии объектов.
if(rxSqlServerTableExists(ds@table, ds@connectionString)) { rxSqlServerDropTable(ds@table, ds@connectionString) }
Определите таблицу, которую можно использовать для хранения двоичных объектов.
ddl <- paste(" CREATE TABLE [", ds@table, "] ("," [id] varchar(200) NOT NULL, "," [value] varbinary(max), "," CONSTRAINT unique_id UNIQUE (id))", sep = "")
Откройте подключение ODBC, чтобы создать таблицу, а после завершения инструкции DDL закройте его.
rxOpen(ds, "w") rxExecuteSQLDDL(ds, ddl) rxClose(ds)
Создайте объекты R, которые вы хотите сохранить.
infertLogit <- rxLogit(case ~ age + parity + education + spontaneous + induced, data = infert)
Используйте созданный ранее объект RxOdbcData , чтобы сохранить модель в базе данных.
rxWriteObject(ds, "logit.model", infertLogit)
Считывание объектов R из SQL Server с помощью ODBC
Эта процедура демонстрирует, как использовать новые функции для загрузки модели из SQL Server.
Настройте строку подключения для SQL Server.
conStr2 <- 'Driver={SQL Server};Server=localhost;Database=storedb;Trusted_Connection=true'
Создайте объект источника данных rxOdbcData в R с помощью этой строки подключения.
ds <- RxOdbcData(table="robjects", connectionString=conStr2)
Считайте модель из таблицы, указав имя ее объекта R.
infertLogit2 <- rxReadObject(ds, "logit.model")