如何使用Scala的RDD删除CSV文件中的指定行(删除第二行)
删除Spark RDD中指定行的实现方法
嘿,我来帮你搞定这个需求!要移除sample.tab里的第二行,咱们可以利用Spark RDD的zipWithIndex()方法给每行添上索引,再过滤掉对应索引的行即可。你已经加载了textRDD,直接基于它处理就行:
具体代码实现
// 为每行数据添加从0开始的索引 val indexedRDD = textRDD.zipWithIndex() // 过滤掉索引为1的行(对应原文件的第二行) val filteredRDD = indexedRDD.filter { case (line, index) => index != 1 } // 提取过滤后的纯文本行 val resultRDD = filteredRDD.map { case (line, _) => line } // 查看处理结果 resultRDD.collect().foreach(println) // 若需要保存到文件,可执行以下代码 // resultRDD.saveAsTextFile("file:/home/bharathi/bhaskar/filtered_sample.tab")
代码说明
zipWithIndex():将RDD的每一行和它的位置索引(从0开始计数)配对成元组,比如原文件的第二行1 2 3 4会被处理成("1 2 3 4", 1)。filter操作:通过判断索引不等于1,剔除掉原文件的第二行。- 最后用
map提取出元组里的行文本,就得到了我们需要的结果。
如果你的需求是删除其他行,只需要修改filter条件里的索引值就行啦~
内容的提问来源于stack exchange,提问作者bhaskaran
相关产品推荐
相关产品推荐

