我有一个文件有一些丢失的数据,所以我试图通过使用计数器变量来识别丢失的记录数。
File: data-error.csv
123,200,Abc
124,300,xyz
125,4,
126,abd
127,400,abc1
此文件包含 总无记录= 5且缺少记录= 2
计划通过扩展App特征:输出 5 2
object CountersTest extends App{
val conf=new SparkConf().setAppName("CounterTest").setMaster("local")
val sc=new SparkContext(conf)
val fileRDD=sc.textFile("data-error.csv")
var missingRecords=0
val rdd1=fileRDD.map(rec=>{
val parseResult=RecordParser.parse(rec)
if(parseResult.isLeft) missingRecords+=1
rec
})
println(rdd1.count())
println(missingRecords)
}
程序使用main方法:输出 5 0
object CounterWithMain {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setAppName("CounterTest").setMaster("local")
val sc=new SparkContext(conf)
val fileRDD=sc.textFile("data-error.csv")
var missingRecords=0
val rdd1=fileRDD.map(rec=>{
val parseResult=RecordParser.parse(rec)
if(parseResult.isLeft) missingRecords+=1
rec
})
println(rdd1.count())
println(missingRecords)
}
}
为什么同样的应用程序提供不同的输出?请帮我解决这个问题。提前致谢。