我正在以字节为单位计算所有事件的总大小:
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
答案 0 :(得分:0)
您应该从头开始使用Long
或打包到BigInt
。 BigInt
的效率较低,因为存在将其存储到内存中的开销。
无论您选择哪种解决方案,都应该在添加时使用正确的类型,而不是在计算结束时使用。