Scala:减少{_ + _}返回负值,因为值太高

时间:2017-06-21 21:56:47

标签: scala apache-spark

我正在以字节为单位计算所有事件的总大小:

val totalSize = sparkContext.map{ case (_, record) => getEventFromRecord(record).toByteArray.size}.reduce{_+_}

并将其写入如下文件:

val outputWriter = new PrintWriter(fs.create(path))
outputWriter.println("Total size: "+ totalSize)

但由于尺寸太大,我得到了负值。我需要将其转换为Long。我尝试了以下更改,但不确定它是否正确:

val totalSize = sparkContext.map{ case (_, record) => getEventFromRecord(record).toByteArray.size.toLong}.reduce{_+_}.toLong

1 个答案:

答案 0 :(得分:0)

您应该从头开始使用Long或打包到BigIntBigInt的效率较低,因为存在将其存储到内存中的开销。

无论您选择哪种解决方案,都应该在添加时使用正确的类型,而不是在计算结束时使用。