【发布时间】:2026-01-12 06:20:09
【问题描述】:
我试图弄清楚如何在 SparkR 中向 HDFS 读取和写入任意文件。
设置是:
args <- commandArgs(trailingOnly = T)
MASTER <- args[1]
SPARK_HOME <- args[2]
INPATH <- 'hdfs/path/to/read/or/load/from'
OUTPATH <- 'hdfs/path/to/write/save/to'
Sys.setenv(SPARK_HOME = SPARK_HOME)
.libPaths(c(file.path(Sys.getenv('SPARK_HOME'), 'R', 'lib'), .libPaths())
library(SparkR)
sparkR.session(master = MASTER)
# How to load RData?
load(paste(INPATH, rObjects.RData, sep = '')
# How to read data?
dat <- read.csv(paste(INPATH, datafile.csv, sep = '')
# Perform operations.....
# How to write?
write.csv(dat, paste(OUTPATH, outdata.csv, sep = '')
我知道这些过程可以通过 shell 脚本或 R 中的类似系统调用来完成,例如:
system('hadoop fs -copyToLocal ...')
但是,我有意避免使用这些解决方案。
Spark v. 2.0.1
R v. 3.3.2
编辑: 下面的评论指出这可能是重复的——该问题更具体地涉及读取 csvs(我的问题的一部分),但仍不清楚如何更一般地加载 .RData 或读/写文件。
【问题讨论】:
-
谢谢。这解决了一个更具体的问题,即如何将 csv 作为 data.frame 加载(我的问题的一部分),但仍不清楚如何加载 .RData 并写入 HDFS
-
Spark 没有合适的阅读器,SparkR 不直接与文件系统交互。
标签: apache-spark hdfs sparkr