Distributed R

时间:2024-11-10 11:36:02

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