scala读取大文件

标签 scala large-files bytearrayoutputstream

您好,我正在寻找最快的 bat 而不是高级方法来处理大量数据收集。 我的任务包括两个任务,读取内存中的大量大文件,然后进行一些统计计算(在此任务中处理数据的最简单方法是随机访问数组)。

我的第一个方法是使用 java.io.ByteArrayOutputStream,因为它可以调整其内部存储的大小。

def packTo(buf:java.io.ByteArrayOutputStream,f:File) = {
  try {
    val fs = new java.io.FileInputStream(f)
    IOUtils.copy(fs,buf)
  } catch  {
    case e:java.io.FileNotFoundException =>
  }
}

    val buf = new java.io.ByteArrayOutputStream()
    files foreach { f:File  => packTo(buf,f) } 
    println(buf.size())

    for(i <- 0 to buf.size()) {
       for(j <- 0 to buf.size()) {
          for(k <- 0 to buf.size()) {
       //  println("i  " + i + "  " + buf[i] );
                   // Calculate something amathing using buf[i] buf[j] buf[k] 
          }
       }
    }

    println("amazing = " + ???)

但是 ByteArrayOutputStream 无法获取我,因为 byte[] 只是它的副本。但我不能允许有 2 个数据副本。

最佳答案

你试过了吗scala-io ?应该和 Resource.fromFile(f).byteArray 一样简单。

关于scala读取大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733403/

相关文章:

scala - 使用 scala.sys.process 转到 scala 中的特定路径

c# - .NET 应用程序中的大内存块。处理它们的最佳/推荐/可扩展方式是什么?

python - Flask中的大文件上传

mercurial - 如何使用 Mercurial 存储我的二进制 Assets ?

java - 高效的Java序列化: Using ByteOutputArrayStream?

java - 如何修复 jar 文件的 Spark-Submit 中的日志记录和版本兼容性

scala - 在 Akka-Streams 中与 mapAsync 一起使用的 ExecutionContext

Android ByteArrayOutputStream 破坏 HTTP GET JSONArray

java - java中ByteArrayOutputStream的环形缓冲区

scala - q"null"的类型是 Literal,因此对于返回类型 Expr[X] 无效