如何删除csv文件中的最后一行

问题描述 投票:0回答:1

我是新来的火花我想从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);

如何删除最后一行?

apache-spark spark-dataframe rdd
1个回答
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 
});

它以同样的方式工作,但可能更快

© www.soinside.com 2019 - 2024. All rights reserved.