Welcome!

Java Authors: Roger Strukhoff, Sharon Barkai, Elizabeth White, Liz McMillan, Pat Romanski

Blog Feed Post

Integrating R with production systems using an HTTP API

by Nick Elprin, Co-Founder of Domino Data Lab We built a platform that lets analysts deploy R code to an HTTP server with one click, and we describe it in detail below.  If you have ever wanted to invoke your R model with a simple HTTP call, without dealing with any infrastructure setup or asking for help from developers — imagine Heroku for your R code — we hope you’ll enjoy this. Introduction Across industries, analytical models are powering core business processes and applications as more companies realize that that analytics are key to their competitiveness.  R is particularly well suited to developing and expressing such models, but unfortunately, the final step of integrating R code into existing software systems remains difficult.  This post describes our solution to this problem: “one-click” publishing of R code to an API server, allowing easy integration between R and other languages, and freeing data scientists to change their models on their own, without help from any developers or engineers. Today, two problems — one technical, and one organizational — create friction when trying to integrate R code into existing software applications.  First, while R is a great language for analytical code, most enterprise software systems are written in more general purpose languages, such as Java, PHP, C#, C++, or even data pipeline tools such as Informatica or Microsoft’s SSIS.  Invoking R code from these languages requires some non-trivial technical work, or translation to another language.  This leads to the second problem: in most companies, software engineering teams are separate from analytics teams, so when analysts need engineering help, they are forced to compete against other priorities, or they must do their own engineering.  Even after an initial deployment of R code, when the model is updated, the deployment process must be repeated, resulting in a painful iteration cycle. A Solution: Domino and API Endpoints Domino is a platform for doing data science in the enterprise: it provides turnkey functionality for job distribution, version control, collaboration, and model deployment, so that data science teams can be productive without their own engineers and developers. We built our “API Endpoints” feature to address the use case I describe above, reducing the friction associated with integrating R (or Python) models into production systems. Here’s how it works:   Let’s say we are building a library for arithmetic. We have a file, arithmetic.R, with this code: add <- function(a, b) {    a + b} multiply > 1) {        Json.toJson(rexp.asDoubles())    } else if (rexp.isList) {      val list = rexp.asList      if (list.isNamed) {        JsObject(          for {            key <- list.keys         } yield {            key -> Json.toJson(new RResult(list.at(key)))        }        )      } else {        JsArray(          for {             i <- @dominodatalab.

Read the original blog entry...

More Stories By David Smith

David Smith is Vice President of Marketing and Community at Revolution Analytics. He has a long history with the R and statistics communities. After graduating with a degree in Statistics from the University of Adelaide, South Australia, he spent four years researching statistical methodology at Lancaster University in the United Kingdom, where he also developed a number of packages for the S-PLUS statistical modeling environment. He continued his association with S-PLUS at Insightful (now TIBCO Spotfire) overseeing the product management of S-PLUS and other statistical and data mining products.<

David smith is the co-author (with Bill Venables) of the popular tutorial manual, An Introduction to R, and one of the originating developers of the ESS: Emacs Speaks Statistics project. Today, he leads marketing for REvolution R, supports R communities worldwide, and is responsible for the Revolutions blog. Prior to joining Revolution Analytics, he served as vice president of product management at Zynchros, Inc. Follow him on twitter at @RevoDavid