Sparkr使用HDFS进行读/写

时间:2017-03-17 15:50:26

标签: apache-spark hdfs sparkr

我试图弄清楚如何在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或更一般地读/写文件。

1 个答案:

答案 0 :(得分:3)

阅读&amp;在SparkR中写入数据帧使用这些

sdf <- read.df(csvPath, "csv", header = "true", inferSchema = "true", na.strings = "NA")
write.df(people, path = "people. csv", source = "csv", mode = "overwrite")

使用rdd使用这些

rdd <- SparkR:::textFile(sc = sc,path = "path",minPartitions = 4)
SparkR:::saveAsTextFile(X,"path")

Databricks在SparkR中使用csv文件有一个很好的包,link