Spark / Yarn:FileNotFoundException

时间:2018-08-22 08:43:58

标签: apache-spark yarn filenotfoundexception

我在运行spark中的以下代码。

scala>import com.databricks.spark.xml.XmlInputFormat
scala>import org.apache.hadoop.io._
scala>sc.hadoopConfiguration.set(XmlInputFormat.START_TAG_KEY,"<mytag>")
scala>sc.hadoopConfiguration.set(XmlInputFormat.END_TAG_KEY,"</mytag>")
scala>sc.hadoopConfiguration.set(XmlInputFormat.ENCODING_KEY,"utf-8")
scala>val record1 = sc.newAPIHadoopFile("file:///home/myuser/myfile.xml", classOf[XmlInputFormat], classOf[LongWritable],classOf[Text])

通过将master设置为local来运行它时,效果很好。

spark2-shell --jars spark-xml_2.10-0.4.1.jar --master local[*]

但是,当我尝试在yarn中运行它时,它返回java.io.FileNotFoundException: File file:/home/myuser/myfile.xml does not exist

spark2-shell --jars spark-xml_2.10-0.4.1.jar --master yarn

我尝试将--deply-mode添加为clientcluster,但是没有用。

1 个答案:

答案 0 :(得分:0)

文件file:///home/myuser/myfile.xml"似乎只能在驱动程序上访问,而不能在执行程序上访问。你应该 A)手动将文件放在HDFS上并从那里读取

或B)使用spark2-shell的--files选项可以为您上传文件到HDFS:

spark2-shell --files /home/myuser/myfile.xml --jars spark-xml_2.10-0.4.1.jar --master yar

然后

val record1 = sc.newAPIHadoopFile(org.apache.spark.SparkFiles.get("myfile.xml"), classOf[XmlInputFormat], classOf[LongWritable],classOf[Text])