我正在尝试获取放置在 Hadoop HDFS 中的所有文件名。我发现的只是用于列出文件的 bash 命令
hadoop fs -ls
有什么办法可以让它们进入R。请指导我谢谢!
setpw("/directory/of/choice")
list.files()
结果是当前工作目录中文件名的字符向量
但在我看来,hadoop 很特别。所以也许这适用于你的情况
system("hadoop fs -ls", intern=T)
结果再次是文件名的字符向量,假设“hadoop fs -ls”实际上在系统控制台中返回类似于“ls”的内容。
查看RHadoop 项目。特别是您需要列出文件的包是 rhdfs。
认为人们可能会发现这个答案很有用,这里是使用 rhdfs 将特定 hdfs 文件夹中的文件名获取到 R 中的代码。
代码:
# Load required library and set hadoop environment
library(rhdfs)
Sys.setenv("HADOOP_CMD"="/opt/cloudera/parcels/CDH/bin/hadoop")
# Initialise
hdfs.init()
# Extract files names from a given hdfs folder to a data frame
files <- as.data.frame(hdfs.ls('/'))
输出:
> files #Print data frame
permission owner group size modtime file
1 -rw-r--r-- manohar supergroup 204632 2015-01-13 22:45 /LICENSES.txt
2 drwxr-xr-x manohar supergroup 0 2014-12-20 19:51 /SA
3 drwxr-xr-x manohar supergroup 0 2015-01-10 18:16 /in
我使用了 Rhipe 的命令rhlist("/")
,它返回了数据框。