web-dev-qa-db-ja.com

Rをパラメーター付きのWebサービスとして呼び出し、JSONをロードしますか?

私はRでかなり新しいです。私がやろうとしていることは、Rスクリプトを実行してJSONを出力する別のアプリケーション(Java)からURLをロードできるようにすることです。

RのWebサーバーとして機能するshinyのようないくつかのフレームワークがあることを理解していますが、Rがそれらを使用できるようにURL経由でパラメーターを渡す方法に関するそれらのフレームワークに関するドキュメントが見つかりません。

理想的には、次のようなURLを呼び出す必要があります。

http://127.0.0.1/R/param1/param2

そして、そのURLはparam1param2を使用していくつかの機能を実行し、JSONを返すRスクリプトを呼び出し、それをアプリから読み取ります。

18
JordanBelf

まだ行っていない場合は、チェックアウトしてください [DeployR]DeployR Google Groupに質問を投稿してサポートを受けることもできます。

完全な開示について、私はDeployRの作成者の1人です。

概要

DeployRは、バックエンドシステムだけでなく、Web、デスクトップ、モバイル、およびダッシュボードアプリケーション内にRアナリティクスを展開するための統合テクノロジーです。 DeployRはRスクリプトを分析Webサービスに変換するため、安全なサーバーで実行されているアプリケーションでRコードを簡単に実行できます。

DeployRは、分析Webサービスを使用して、既存のITインフラストラクチャと一緒にRベースの分析を採用する人が直面する主要な統合問題も解決します。これらのサービスにより、アプリケーション開発者はデータサイエンティストと協力して、Rプログラミングの知識がなくてもRアナリティクスをアプリケーションに統合することが容易になります。

DeployRには、2つのエディションDeployR OpenおよびDeployR Enterpriseがあります。 DeployR Openは無料のオープンソースソリューションであり、重要ではないビジネスアプリケーションのプロトタイピング、構築、展開に最適です。 DeployR Enterpriseビジネスクリティカルなアプリケーションに対応し、プロダクショングレードのワークロードのサポートに加えて、シングルサインオン(SSO)、ライトウェイトディレクトリアクセスプロトコル(LDAP)などの一般的なエンタープライズセキュリティソリューションとのシームレスな統合を提供します)、Active Directory、またはPluggable Authentication Modules(PAM)。

私はRでかなり新しいです

知事。 DeployRは、データサイエンティストと、Rを知らない可能性のあるアプリケーション開発者の両方を対象としています。

私がやろうとしているのは、Rスクリプトを実行してJSONを出力する別のアプリケーション(Java)からURLをロードして、アプリケーションで処理できるようにすることです。

DeployRはこれをうまくやります。アプリケーションと(Rを実行する)DeployRサーバー間の通信を支援するために、 DeployRクライアントライブラリ があります。

ニーズに応じて、DeployRはすぐ​​に使える「クライアントライブラリ」をサポートします。

DeployRは RBroker Framework もサポートしています

ユースケースまたはランタイムが大量のワークロード、または定期的、スケジュール済み、またはバッチ処理の必要性を予測する場合.

RのWebサーバーとして機能するshinyのようないくつかのフレームワークがあることを理解していますが、Rがそれらを使用できるようにURLを介してパラメーターを渡す方法に関するそれらのフレームワークに関するドキュメントが見つかりません

DeployRは、APISを通じて分析エンジンとして機能します。基本的には、Rスクリプトを安全な分析Webサービスに変換して、他のWebサービスと同様に利用できるものと考えてください。

パスパラメータ

DeployRでRスクリプトにパラメーターを渡すのは簡単ですが、R以外の言語からRスクリプトにパラメーターを渡すことを理解する必要があります。そのため、実行する必要がある「データエンコーディング」がいくつかあります。たとえば、Java文字列をR characterに変換するか、Javaブール値をR logicalに変換します... DeployRクライアントライブラリまたはRBrokerはこれを簡単にします。

Javaを使用しているようです。まずJava tutorial Java-example-client-basicshttps://github.com/deployr/Java-example-rbroker-basicsを確認してから、コンテキストを確認してから、多くのJava以下の例Java-example-client-data-iohttps://github.com/deployr/Java-example-client-data-ioの下にあります。サンプルソースは完全に利用できるので、 R分析のためにアプリケーションからDeployRサーバーに基本的なI/Oを行う方法を理解するために。

理想的には、次のようなURLを呼び出す必要があります:http://127.0.0.1/R/param1/param2

上で説明したように、通信にDeployRクライアントライブラリを使用することをお勧めします。

いつものように、DeployR Google Grouphttps://groups.google.com/forum/#!forum/deployrに質問を投稿してヘルプを求めてください。

5
swells

これを行うにはいくつかのオプションがあります。IMHO OpenCP は素晴らしいものです。

これは、R計算をRESTサービスとして提供するWebサーバーを実装する最も簡単なオープンソースの方法です。

OpenCPUの作成者は jsonlite パッケージの作成者と同じであり、 here を見るとわかるように、OpenCPUでjsonパラメータを簡単に取得して渡すことができます。

3
Murta

REST API WebサービスをRに実装する別の方法は、 配管工 パッケージ(以前はrapier)特別なコメント内で関数装飾アプローチを使用します:

# myfile.R

#* @get /mean
normalMean <- function(samples=10){
    data <- rnorm(samples)
    mean(data)
}

# service.R

library(plumber)
r <- plumb("myfile.R")  # Where 'myfile.R' is the location of the file shown above
r$run(port=8000)

次に、それを呼び出します。

curl "http://localhost:8000/mean"
2
Rabash