scala - Spark Counter:主要方法/扩展应用程序为同一应用程序提供不同的输出,为什么会这样?
问题描述
我有一个文件丢失了一些数据,所以我试图通过使用计数器变量来识别丢失的记录数。
File: data-error.csv
123,200,Abc
124,300,xyz
125,4,
126,abd
127,400,abc1
此文件包含Total No Records= 5 和 Missing Records = 2
通过扩展 App trait 进行编程:输出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)
}
}
为什么同一个应用程序给出不同的输出?请帮我解决这个问题。提前致谢。
解决方案
推荐阅读
- jquery - 第二个列表项应该被选中
- shiny - 部署我的 APP 不断请求 ggplot2
- javascript - 调整不同主题的文字颜色
- android - Butterknife 抛出 java.lang.IllegalStateException 因为找不到视图(现在不存在)
- kubernetes - 如何以及在何处将参数路径放置到调用 URL
- youtube - 在容器或盒子内颤动 youtube 视频
- ruby-on-rails - Rails 无法部署到 Elastic Beanstalk Gem 文件
- javascript - 在 DnD 上正确使用 z-index
- php - 使用 Laravel Voyager 管理包实现 REST API
- python - 如何在 Python Flask 中为帖子实现点赞按钮功能?