提交到 Spark 集群时出现 FileNotFoundException

Mat*_*ert 5 scala filenotfoundexception cluster-computing apache-spark

我使用 Apache Spark 创建了一个小应用程序,当我在本地运行该应用程序时,一切正常。但是当我将它提交到一个 6 节点集群时,我得到一个 FileNotFoundException,因为他找不到输入文件。

这是我的小应用程序。

def main (args: Array[String]) {
  val sparkContext = new SparkContext(new SparkConf())
  val tweets = sparkContext.textFile(args(0))

  tweets.map { line => (line, LanguageDetector.create().detect(line)) }
     .saveAsTextFile("/data/detected")
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令提交申请:

/opt/spark-1.0.2-bin-hadoop2/bin/spark-submit --class YarnTest --master spark://luthor-v1:7077 lang_detect.jar twitter_data 
Run Code Online (Sandbox Code Playgroud)

提交后,我收到以下异常:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0.0:1 failed 4 times, most recent failure: Exception failure in TID 6 on host luthor-v5: java.io.FileNotFoundException: File file:/opt/bb/twitter_data does not exist
Run Code Online (Sandbox Code Playgroud)

文件肯定在那里,jar和文件在同一目录中,它可以解析完整路径。

提前致谢

Ana*_*nas 0

spark-submit假设该文件jar位于当前工作目录中,并且提到的文件位于 hdfs 中。将文件twitter_data从本地文件系统复制到 hdfs,如下所示:

hadoop fs -copyFromLocal twitter_data /twitter_data
Run Code Online (Sandbox Code Playgroud)

它会将文件复制到/hdfs 目录中。现在运行命令:

spark-submit --class YarnTest --master spark://luthor-v1:7077 lang_detect.jar /twitter_data
Run Code Online (Sandbox Code Playgroud)