今天打開spark-shell 想試試好久不用的命令,想從本地讀取數據,然后做一個簡單的wordcount。但是就是讀取不成功。代碼如下:
scala 代碼 val file="/home/gxg/test" val lines = sc.textFile(file) val wordRDD = lines.flatMap(line => line.split(" ")) val wordpair = wordRDD.map(word => (word,1)) val result = wordpair.reduceByKey(_+_) org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://server1.hadoop:8020/home/gxg/test at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:287) at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229) at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:315) at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:202) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.rdd.RDD.partitions(RDD.scala:250)
在做累加的時候就報錯了,這里顯示要從HDFS上面去讀取文件, 但是我想從本地讀取文件進行計算。於是找資料,將輸入的文件的加上前綴,則計算成功。
val file="file:///home/gxg/test"
至此使用spark可以從本地讀取文件然后進行計算。