R语言的分布式目前有这几个产品:
(A)RHadoop:对hadoop族系的产品,其中提供了以下的组件
A.1 rhdfs 浏览读取增加修改hdfs上面的文件数据;
A.2 rhbase 浏览读取增加修改hbase中的文件数据;
A.3 plyrmr 用mr方式在hadoop中提供类似于plyr/
reshape2这样的数据操作的功能;需要安装到每个节点上面;
A.4 rmr2 用mr方式运行R语言,需要每个节点进行安装,查看例子 https://github.com/jseidman/hadoop-R/blob/master/airline/src/deptdelay_by_month/R/rmr/deptdelay-rmr.R
好了,至此可以看出,RHadoop提供了一套基于hadoop和R语言对接的联通功能,但也无法全面兼容已经存在的各种R语言的包,现存的各种算法不经过修改也无法可以在hadoop上面运行;
(2)sparkR:基于 parallel DataFrame abstraction
不同于hadoop,sparkR DataFrame 抽象是类似于R中的表数据的结构,但是存储在云端环境里面。sparkR得益于RDD的设计,在DF层面支持分布式的数据的处理,同样的是需要用户自己迁移现有的算法库;sparkR能够直接使用类似于原生R语法进行操作,例如:
# Create a new DataFrame that contains "young users" only
young = users.filter(users.age < 21)
# Alternatively, using Pandas-like syntax
young = users[users.age < 21]
# Increment everybody's age by 1
young.select(young.name, young.age + 1)
# Count the number of young users by gender
young.groupBy("gender").count()
# Join young users with another DataFrame called logs
young.join(logs, logs.userId == users.userId, "left_outer")
具体https://databricks.com/blog/2015/06/09/announcing-sparkr-r-on-spark.html
官方文档http://people.apache.org/~pwendell/spark-releases/latest/sparkr.html#sparkr-dataframes
(3)Microsoft R: 整合了开源R和hadoop R