我使用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")
}
我使用以下命令提交应用程序:
/opt/spark-1.0.2-bin-hadoop2/bin/spark-submit --class YarnTest --master spark://luthor-v1:7077 lang_detect.jar twitter_data
提交后我得到以下异常:
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
文件确实存在,jar和文件位于同一目录中,它可以解析完整路径。
提前致谢
答案 0 :(得分:0)
spark-submit
假设jar
驻留在当前工作目录中,并且提到的文件位于hdfs中。将文件twitter_data
从本地文件系统复制到hdfs,如下所示:
hadoop fs -copyFromLocal twitter_data /twitter_data
它会将文件复制到hdfs的/
目录中。现在运行命令:
spark-submit --class YarnTest --master spark://luthor-v1:7077 lang_detect.jar /twitter_data
答案 1 :(得分:0)
Hadoop配置目录" spark-env.sh"可能不行。请检查一下。它应该是:" your_hadoop_dir / etc / hadoop / "