我的HortonWorks HDP 2.3_1 VirtualBox VM中有一个HDFS文件。
如果我进入guest spark shell并且因此引用该文件,它可以正常工作
val words = sc.textFile(“hdfs:///tmp/people.txt”) words.count
但是,如果我尝试从Windows主机上的本地Spark应用程序访问它,则无效
val conf = new SparkConf().setMaster("local").setAppName("My App")
val sc = new SparkContext(conf)
val words=sc.textFile("hdfs://localhost:8020/tmp/people.txt")
words.count
发出
线程“main”中的异常org.apache.spark.SparkException:作业因阶段失败而中止:阶段0.0中的任务0失败1次,最近失败:阶段0.0中丢失的任务0.0(TID 0,localhost): org.apache.hadoop.hdfs.BlockMissingException:无法获取块:BP-452094660-10.0.2.15-1437494483194:blk_1073742905_2098 file = / tmp / people.txt at org.apache.hadoop.hdfs.DFSInputStream.chooseDataNode(DFSInputStream.java:838) 在org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:526)
端口8020已打开,如果我选择了错误的文件名,它会告诉我
Input path does not exist: hdfs://localhost:8020/tmp/people.txt!!
localhost:8020应该是正确的,因为客户HDP VM帽子NAT端口隧道到我的主机Windows框。
我告诉我,如果我给它错误的名字,我会得到一个恰当的例外
我的pom已经
了<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>1.4.1</version>
<scope>provided</scope>
</dependency>
我做错了吗?什么是BlockMissingException试图告诉我?