我是新来的火花我想从csv文件中删除标题和最后一行
Notes xyz
"id","member_id"
"60045257","63989975",
"60981766","65023535",
Total amount:4444228900
Total amount: 133826689
我想从文件中删除 Notes xyz ,总金额:4444228900 和总金额:133826689 。我已删除了第一个来自文件的行
val dfRetail = sc.textFile("file:////home/cloudera/Projects/Project3/test/test_3.csv");
var header=dfRetail.first();
var final_data=dfRetail.filter(row => row!=header);
如何删除最后一行?
答案 0 :(得分:1)
使用zipWithIndex,然后按索引过滤:
val total = dfRetail.count();
val withoutFooter = dfRetail.zipWithIndex()
.filter(x => x._2 < total - 3)
.map (x => x._1)
它会将每一行映射到一对(行,索引)。然后你过滤这个RDD,只选择索引低于对象总数的那些 - 3 - 所以没有页脚。当您将它映射到元组的第一个元素时,对于文档行
您还可以使用mapPartitionsWithIndex:
val withoutFooter = dfRetail.mapPartitionsWithIndex { (idx, iter) =>
val size = iter.size();
if (idx == noOfTotalPartitions) {
iter.take(size - 3)
}
else iter
});
它以相同的方式工作,但可能更快