Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2016 (13.x) и более поздних версий
Эта часть 4 входит в состав серии учебников по RevoScaleR, посвященной использованию функций RevoScaleR в SQL Server.
В предыдущем учебнике вы использовали функции RevoScaleR для проверки объектов данных. В этом учебнике представлена функция RxInSqlServer, которая позволяет определить контекст вычислений для удаленного экземпляра SQL Server. С помощью удаленного контекста вычислений можно переместить выполнение R из локального сеанса в удаленный сеанс на сервере.
- Элементы удаленного контекста вычислений SQL Server
- Включение трассировки в объекте контекста вычислений
RevoScaleR поддерживает несколько контекстов вычислений: Hadoop, Spark в HDFS и SQL Server в базе данных. Для SQL Server функция RxInSqlServer используется для подключения к серверу и передачи объектов между локальным компьютером и удаленным контекстом выполнения.
Создание и задание контекста вычисления
Функция RxInSqlServer, которая создает контекст вычислений SQL Server, использует следующие сведения:
- Строка подключения для экземпляра SQL Server
- спецификация способа обработки выходных данных;
- необязательная спецификация каталога общих данных;
- необязательные аргументы, которые позволяют выполнять трассировку или указывать уровень трассировки.
В этом разделе описывается каждая из этих частей.
Укажите строку подключения к экземпляру, в котором будут производиться вычисления. Вы можете повторно использовать созданную ранее строку подключения.
Использование имени для входа SQL
sqlConnString <- "Driver=SQL Server;Server=<SQL Server instance name>; Database=<database name>;Uid=<SQL user nme>;Pwd=<password>"Использование проверки подлинности Windows
sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"Укажите способ обработки выходных данных. Следующий скрипт задает в локальном сеансе R ожидание результатов задания R на сервере перед обработкой следующей операции. Он также подавляет вывод из удаленных вычислений в локальном сеансе.
sqlWait <- TRUE sqlConsoleOutput <- FALSEАргумент wait функции RxInSqlServer может иметь перечисленные ниже значения.
TRUE. Задание будет блокироваться и не вернет результат, пока его выполнение не завершится успешно или с ошибкой.
FALSE. Задания не будут блокироваться и вернут результат немедленно, что позволит продолжать выполнять другой код на языке R. Однако даже в режиме без блокировки подключение клиента к SQL Server должно поддерживаться во время выполнения задания.
При необходимости укажите расположение локального каталога для общего использования локальным сеансом R и удаленным компьютером SQL Server и ее учетными записями.
sqlShareDir <- paste("c:\\AllShare\\", Sys.getenv("USERNAME"), sep="")Если вы хотите вручную создать каталог для совместного использования, можно добавить строку, подобную следующей:
dir.create(sqlShareDir, recursive = TRUE)Передайте аргументы для конструктора RxInSqlServer, чтобы создать объект контекста вычислений.
sqlCompute <- RxInSqlServer( connectionString = sqlConnString, wait = sqlWait, consoleOutput = sqlConsoleOutput)Синтаксис RxInSqlServer почти идентичен синтаксису функции RxSqlServerData, которая ранее использовалась для определения источника данных. Однако есть несколько важных отличий.
Объект источника данных, определенный с помощью функции RxSqlServerDataуказывает, где хранятся данные.
Напротив, контекст вычислений (определенный с помощью функции RxInSqlServer) указывает, где должно производиться агрегирование и другие вычисления.
Определение контекста вычислений не влияет на другие обычные вычисления R, которые могут выполняться на рабочей станции, и не изменяет источник данных. Например, можно определить в качестве источника данных локальный текстовый файл, но изменить контекст вычислений на SQL Server и выполнять все операции чтения и обобщения данных на компьютере SQL Server.
Активируйте удаленный контекст вычислений.
rxSetComputeContext(sqlCompute)Возврат сведений о контексте вычислений, включая его свойства.
rxGetComputeContext()Верните контекст вычислений обратно на локальный компьютер, указав ключевое слово "Local" (использование удаленного контекста вычислений описано в следующем учебнике).
rxSetComputeContext("local")
Совет
Чтобы просмотреть список других ключевых слов, поддерживаемых этой функцией, в командной строке R введите help("rxSetComputeContext") .
Включить трассировку
Иногда в операциях, которые работают в локальном контексте, могут возникать проблемы при работе в контексте удаленных вычислений. Если вы хотите анализировать проблемы или наблюдать за производительностью, можно включить трассировку в контексте вычислений для помощи при устранении неполадок во время выполнения.
Создайте новый контекст вычислений, использующий ту же строку подключения, но добавьте аргументы traceEnabled и traceLevel в конструктор RxInSqlServer.
sqlComputeTrace <- RxInSqlServer( connectionString = sqlConnString, #shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput, traceEnabled = TRUE, traceLevel = 7)В этом примере свойству traceLevel присваивается значение 7, что означает "показывать все данные трассировки".
Используйте функцию rxSetComputeContext и указывайте контекст с включенной трассировкой по имени.
rxSetComputeContext(sqlComputeTrace)
Следующие шаги
Узнайте, как переключать контексты вычислений для выполнения кода R на сервере или локально.