【问题标题】:R-Hadoop integration - how to connect R to remote hdfsR-Hadoop 集成 - 如何将 R 连接到远程 hdfs
【发布时间】:2016-01-07 21:20:09
【问题描述】:

我有一个案例,我将对从 Hadoop 下载的数据运行 R 代码。然后,R 代码的输出也将上传回 Hadoop。目前,我是手动完成的,我想避免这种手动下载/上传过程。

有没有办法通过连接到 hdfs 在 R 中做到这一点?换句话说,在 R 脚本的开头,它连接到 Hadoop 并读取数据,然后再次将输出数据上传到 Hadoop。有没有可以使用的包? Hadoop 服务器或 R 需要进行任何更改吗?

我忘了注意重要的部分:R 和 Hadoop 位于不同的服务器上。

【问题讨论】:

  • 请问你为什么要从hdfs下载数据?一般来说,使用hadoop,重点应该是将计算带到数据中。并不是说您永远不会想要这样做,只是对您的用例感到好奇。
  • 我不熟悉如何在 hadoop 中对数据运行 R 函数而不先在 R 中读取它。
  • 你能在你的 Hadoop 服务器上安装 R 吗?将数据下载到您的 R 服务器似乎很昂贵......
  • 不,我们无法在 Hadoop 服务器上安装 R。数据的大小也不会成为问题。这将定期完成,因此我们希望尽可能在 R 中完成所有操作。
  • 这是一个答案吗? stackoverflow.com/questions/17583846/…

标签: r hadoop hdfs rhadoop


【解决方案1】:

安装包 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。

【讨论】:

    【解决方案2】:

    那么...您找到解决方案了吗?

    几个月前,我偶然发现了同样的情况。在用 Revolution Analytics 包摆弄了一段时间后,我找不到在 R 和 Hadoop 位于不同服务器上的情况下工作的方法。

    我尝试使用 webHDFS,当时它对我有用。 您可以找到用于 webhdfs 访问的 R 包here

    该软件包在您需要运行的 CRAN 上不可用:

    devtools::install_github(c("saurfang/rwebhdfs"))
    

    (是的...您将需要 devtools 包)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-21
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多