我想用spark來總結一個文件的所有行的長度。 這些行格式如下:用Spark讀取整個文件
A1004AX2J2HXGL\tB0007RT9LC\tMay 30, 2005\t3\n\t4\t5.0\tLes carottes sont cuites
爲了達到我的目標,我試圖在documentation給出此代碼:
JavaRDD<String> txtFile = sc.textFile(filePath);
JavaRDD<Integer> linesLength = txtFile.map(s -> s.length());
long totalLength = linesLength.reduce((a, b) -> a+b);
但是,這是行不通的。例如,對於一個5.8GB的文本文件,它返回1602633268時它應該返回5897600784. 我想這是由於一些行可能包含奇怪的字符, 停止行的閱讀。
隨着古老的古老Java,這個問題可以用BufferedReader來解決,就像在this case中一樣。但是,在文檔中我沒有發現Spark中類似的東西。
我該怎麼辦?
你怎麼知道1602633268是錯的? – aaronman
我沒有使用Spark進行檢查。 – fxm
答案是什麼?也是壓縮文件? – aaronman