我有一个案例,我将在将从Hadoop下载的数据上运行R代码。然后,R代码的输出也将上传回Hadoop。目前,我手动完成,我想避免手动下载/上传过程。
有没有办法可以通过连接到hdfs在R中执行此操作?换句话说,在R脚本的开头,它连接到Hadoop并读取数据,然后最终将输出数据再次上传到Hadoop。有没有可以使用的包裹? Hadoop服务器或R?
中需要进行哪些更改我忘记了重要的部分:R和Hadoop在不同的服务器上。
答案 0 :(得分:0)
安装软件包rmr2,你可以选择 from.dfs 这个函数来解决你从HDFS获取数据的要求,如下所述:
input_hdfs <- from.dfs("path_to_HDFS_file",format="format_columns")
要将结果存储回HDFS,您可以这样做
write.table(data_output,file=pipe(paste('hadoop dfs -put -', path_to_output_hdfs_file, sep='')),row.names=F,col.names=F,sep=',',quote=F)
(或) 您可以使用rmr2 to.dfs 功能将其存储回HDFS。
答案 1 :(得分:0)
那么......你找到了解决方案吗?
几个月前,我偶然发现了同样的情况。在使用Revolution Analytics软件包摆弄一段时间之后,我无法找到一种方法让它在R和Hadoop位于不同服务器上的情况下工作。
我尝试使用webHDFS,当时为我工作。 您可以找到webhdfs acess here
的R包您需要运行的CRAN上没有该软件包:
devtools::install_github(c("saurfang/rwebhdfs"))
(是的......你需要devtools套餐)