Search code examples
jsonrhbaseshinyopencpu

Use R as a restful service


Currently I have a shiny web app that can do some calculations on a 3GB data.frame loaded in memory.

Now instead of implementing this feature on shiny web app, I need to make it a restful service that pipelines its calculation to another app in JSON format, so that people can use it by sending http request with url like http://my-app.com/function

I'm trying opencpu right now, but I don't quite understand how can I load and keep the large data in memory so that I can use api of opencpu to call functions in package just to do calculations, not to load the large data from disk every time I send http request.

One workaround might be to use hbase as in memory database and use rhbase to load the data. But before I invest time in learning it I want to know if it is a reasonable choice for 3GB data.frame since it might add more overhead in serialization and other stuff that offset its speed benefit.

What would be a better way to implement this functionality? Solutions using packages other than opencpu are also welcome, and it's better to be free.


Solution

  • You may want to look at Plumber. You decorate your R functions with comment code (that can include you loading data) and it makes it available via a REST API.