2014-02-27 2 views
10

Я использую Excel + R для Windows на довольно медленном рабочем столе. У меня есть полный доступ администратора к очень быстрому серверу на базе Ubuntu. Мне интересно: как удаленно выполнять команды на сервере?Как легко выполнить команды R на удаленном сервере?

Что я могу сделать, это сохранить необходимые переменные с помощью saveRDS и загрузить их на сервере с помощью loadRDS, выполнить команды на сервере, а затем сохранить результаты и загрузить их в Windows.

Но все это очень интерактивно и ручно, и его вряд ли можно сделать на регулярной основе.

Есть ли способ, чтобы сделать материал непосредственно из R, как

  1. Connect с сервером через, например, SSH,
  2. передачи необходимые объекты (которые могут быть заданы вручную)
  3. Execute данный код на сервере и ждать результата
  4. Получить результат.

Я мог бы запустить весь R удаленно, но тогда это вызовет проблемы, связанные с сетью. Большинство команд R, которые я делаю из Excel, очень быстры и голодны. Мне просто нужно дистанционно выполнить некоторые конкретные команды, не все из них.

+0

Вы можете вызвать команды оболочки непосредственно из R, используя 'system', так что вы можете легко написать команды, которые вы сейчас вводите на консоли, в R-скрипт. – Thomas

+4

Одним из вариантов является установка Rstudio-сервера и работа оттуда. –

+0

№ AFAIK RExcel не работает с удаленными подключениями, и даже если бы это было так, это было бы неэффективно, если я начну передавать все свои данные по сети. Мне просто нужно дистанционно выполнить определенные команды. –

ответ

2

Есть еще несколько вариантов: 1) Вы можете сделать материал непосредственно из R с помощью Rserve. См.: https://rforge.net/

Имейте в виду, что Rserve может принимать соединения от клиентов R, см., Например, how to connect to Rserve with an R client.

2) Вы можете настроить кластер на своей машине Linux, а затем использовать эти объекты кластера у своего клиента Windows. Самое простое - использовать Snow, https://cran.r-project.org/package=snow, также см. Foreach и многие другие библиотеки кластеров.

2

Существует несколько вариантов, Простейший - это обмен безопасными ключами, чтобы все время не вводить пароли SSH/SCP вручную. После этого, вы можете написать простой R скрипт, который будет:

  1. Сохранить необходимые переменные в файл данных,
  2. Использование УПП для загрузки файла данных на Ubuntu Server
  3. Использование SSH для запуска удаленного сценария, будет обрабатывать данные (которые вы только что загрузили) и сохранить результат в другом файле данных.
  4. Опять же, используйте команду scp для передачи результатов на вашу рабочую станцию.

Вы можете использовать команду R's system для запуска scp и ssh с необходимыми параметрами.

Другой вариант - это настроить работу кластера на удаленном компьютере, затем вы можете экспортировать данные с помощью clusterExport и оценить выражения с помощью clusterEvalQ и clusterApply.

+0

Как настроить кластер на удаленном компьютере? –

5

Вот моя установка.

  1. Скопируйте ваш код и данные с помощью scp. (Я использовал github, поэтому я клонировал свой код из github. Это дает возможность убедиться, что моя работа воспроизводима).

  2. (необязательно) Используйте sshfs для установки удаленной папки на вашем локальном компьютере. Это позволяет редактировать удаленные файлы с помощью локального текстового редактора вместо командной строки ssh.

  3. Поместите все вещи, которые вы хотите запустить в сценарии R (на удаленном сервере), а затем запустите его через ssh в режиме R-партии.

+0

Это именно то, что я делаю. Жаль, что у R нет встроенных функций клиент/сервер. –

Смежные вопросы