我有一个csv,未引用,在下面添加了一个示例
如第二行所示,新行用\进行转义,有一种方法可以使用apache spark将其替换为其他字符。
输入CSV
Banana,23,Male,5,11,2017
Cat,32,Fe\
male,2,11,2017
Dragon,28,Male,1,11,2017
预期产量
Banana,23,Male,5,11,2017
Cat,32,Fe-male,2,11,2017
Dragon,28,Male,1,11,2017
注意:原始文件很大(大约40GB)
编辑1我刚刚找到一个答案,而不是“ sc.textFile”使用“ sc。WholeTextFiles”,但是鉴于我的大小太大,我不确定它是否可以提高内存效率,请告知
经过一番研究和解决,这就是我来到的地方
正如@ vikrant-rana在答案中建议的那样,使用sc.textFile()进行读取并在分区上进行映射是一种尝试的方法,但是由于我们需要合并的行可能会转到不同的分区,因此这不是一个可靠的解决方案..有时当它们位于同一分区上时可能会起作用,但并不总是起作用
我们也可以使用sc.wholeTextFiles()将文件读入单个分区并在其上进行映射,但是那样会立即将整个文件读入内存,不适用于大文件
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句