Spark scala输入/输出目录

时间:2016-04-29 12:55:38

标签: scala maven apache-spark

我是Spark / Scala Programming的新手。我可以使用maven进行设置并能够运行示例字数计划。

我在这里有2个问题,因为它们都在Spark环境/ Windows本地运行: 1. scala程序如何识别输入。 2.如何将输出写入文本文件。

这是我的代码

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD.rddToPairRDDFunctions
object WordCount {
 def main(args: Array[String]) = {

//Start the Spark context
val conf = new SparkConf()
  .setAppName("WordCount")
  .setMaster("local")
val sc = new SparkContext(conf)

//Read some example file to a test RDD
val textFile = sc.textFile("file:/home/root1/Avinash/data.txt")

val counts = textFile.flatMap(line => line.split(" "))
             .map(word => (word, 1))
             .reduceByKey(_ + _)
             counts.foreach(println)
             counts.collect()
    counts.saveAsTextFile("file:/home/root1/Avinash/output")

}

}

当我将文件放入文件:/home/root1/Avinash/data.txt并尝试运行时它没有用。只有当我将data.txt放在/home/root1/softs/spark-1.6.1中时/ bin或工作区中的项目文件夹内,它正在尝试输入。

类似地,当我尝试使用counts.saveAsTextFile(" file:/ home / root1 / Avinash / output")写入输出时,它不是写入而是将错误抛出为                                                                               线程" main"中的例外情况java.io.IOException:没有用于方案的FileSystem:D。

请帮我解决这个问题!!。

1 个答案:

答案 0 :(得分:2)

你想在文件中使用///。这是一个例子

val textFile = sc.textFile("file:///home/root1/Avinash/data.txt")

val counts = textFile.flatMap(line => line.split(" "))
             .map(word => (word, 1))
             .reduceByKey(_ + _).cache() 

             counts.foreach(println)
             //counts.collect()
    counts.saveAsTextFile("file:///home/root1/Avinash/output")

如果文件很大,则每次使用RDD时都使用缓存来避免计算