2015-08-26 2 views
0

Я запускаю пример pi.R с использованием spark-submit. Выход отображается на терминале, но я хочу сохранить вывод в путь hdfs.как сохранить вывод на конкретный путь в sparkR

/SparkR-pkg/lib/SparkR/sparkR-submit --master yarn-client examples/pi.R yarn-client 4 

выше команда используется для запуска примера pi.r

здесь код pi.R

library(SparkR) 
args <- commandArgs(trailing = TRUE) 
if (length(args) < 1) { 
print("Usage: pi <master> [<slices>]") 
q("no") 
} 
sc <- sparkR.init(args[[1]], "PiR") 
slices <- ifelse(length(args) > 1, as.integer(args[[2]]), 2) 
n <- 100000 * slices 
piFunc <- function(elem) { 
rands <- runif(n = 2, min = -1, max = 1) 
val <- ifelse((rands[1]^2 + rands[2]^2) < 1, 1.0, 0.0) 
val 
} 
piFuncVec <- function(elems) { 
message(length(elems)) 
rands1 <- runif(n = length(elems), min = -1, max = 1) 
rands2 <- runif(n = length(elems), min = -1, max = 1) 
val <- ifelse((rands1^2 + rands2^2) < 1, 1.0, 0.0) 
sum(val) 
} 
rdd <- parallelize(sc, 1:n, slices) 
count <- reduce(lapplyPartition(rdd, piFuncVec), sum) 
cat("Pi is roughly", 4.0 * count/n, "\n") 
cat("Num elements in RDD ", count(rdd), "\n") 

я хочу, чтобы сохранить выше выход в HDFS location.any помощь будет оценен

ответ

0

Я не тестировал это на кластере, но я предполагаю, что обычный R-код будет работать здесь:

output <- paste("Pi is roughly", 4.0 * count/n, "\n") 
output <- paste(output, "Num elements in RDD ", count(rdd), "\n") 
write(output,file="pathToFile") #can be location.any 
+0

, когда я запускаю вышеуказанный код, я получил эту ошибку.Error в ifelse (append, "a", "w"): object 'w' не найден Звонки: write -> cat -> file -> ifelse –

+0

Помогает ли это при использовании write (output, file = "pathToFile", append = TRUE)? –

+0

, даже если я установил append как true, я получаю такую ​​же ошибку, в файле (файл, ifelse (append, «a», «w»)): не может открыть файл «hdfs: // ip-172-31-41 -199.us-west-2.compute.internal: 8020/user/karun/output/test1.txt ': Нет такого файла или каталога –

Смежные вопросы