2017-07-25 49 views
0

我想創建一個行[RDD]斯卡拉-java.lang.ArrayIndexOutOfBoundsException:1

val RowRDD =sc.textFile("InputFile.csv").map(x=>x.split(" ")).map(p=>Row(p(1),p(2))) 

InputFile.csv是

spark 5 1 
hadoop 7 1 
flink 10 1 

然而,當我運行我的應用程序中,錯誤說

java.lang.ArrayIndexOutOfBoundsException: 1 

很明顯'InputFile.csv'有3行,爲什麼會出現錯誤?

+0

難道會有一個空行導致錯誤?但是,請記住,在Spark中,您可以輕鬆地讀取CSV(可指定自定義列分隔符,因爲它似乎與您的情況相關)。更多在這裏:https://spark.apache.org/docs/2.1.1/sql-programming-guide.html#data-sources CSV閱讀器的選項在這裏:https://spark.apache.org/docs /2.1.1/api/scala/index.html#[email protected](paths:String*):org.apache.spark.sql.DataFrame – stefanobaghino

+0

@stefanobaghino是的,一個空行可能是這個問題。我試圖照顧空線並取得成功。 –

回答

2

我附上了我自己試圖在火星殼中讀取文件的截圖;正如你所看到的那樣,在代碼上運行你的特定行應該沒有問題。您很可能在整個代碼中省略了其他一些行。我經常犯的一個錯誤是我給了一個命令行參數的引用,然後忘記在命令行上傳遞任何參數。如果你可以粘貼整個代碼,它可能會被診斷出來。上面給出的一行是完全正確的。 spark-shell screenshot