Spark程序计算初始化为0的累加器值,当程序正在读取包含100个文件的文件夹时,它将增加1?
val myaccumulator = sc.accumulator(0)
val inputRDD= sc.wholeTextFiles("/path/to/100Files")
inputRDD.foreach(f => myaccumulator + f.count)
<console>:29: error: value count is not a member of (String, String)
inputRDD.foreach(f => myaccumulator + f.count)
^
答案 0 :(得分:0)
如果您只想计算文件中的行数,则不需要任何花哨的东西。这样做:
val myaccumulator = sc.accumulator(0)
sc.textFile("path/to/dir/containing/the/files").foreach(_ => myaccumulator += 1)
如果您绝对想要使用累加器,可以这样做:
sc.wholetextFiles("path/to/dir/containing/the/files")
.map(_._2.split("\\n").size)
.reduce(_+_)
如果您绝对想要使用wholeTextFile(将每个文件的整个内容放在一个字符串中),则以下任何一个都会计算这些行:
val myaccumulator = sc.accumulator(0)
sc.wholeTextFiles
.foreach(x => myaccumulator += x._2.split("\\n").size)
或使用累加器
MKCoordinateSpan