提问者:小点点

写/读/删除二进制数据在火花数据库(scala)


我是Spark on Database ricks(Scala)的新手,我想知道如何将Array[Byte]类型的变量内容写入挂载存储mtn/在某处/tmp/(Azure Data Lake)中的临时文件data. binfile:/tmp/。然后我想知道如何将其作为InputStream读取,然后在完成后将其删除。

到目前为止,我读过的所有方法都不起作用或不适用于二进制数据。

谢谢你。


共1个答案

匿名用户

原来这段代码工作正常:

import java.io._
import org.apache.commons.io.FileUtils

// Create or collect the data
val bytes: Array[Byte] = <some_data>

try {
    // Write data to temp file
    // Note : Here I use GRIB2 file as I manipulate forecast data,
    //        but you can use .bin or .png/.jpg (if it's an image data)
    //        extensions or no extension at all. It doesn't matter.
    val path: String = "mf-data.grib"
    val file: File = new File(path)
    FileUtils.writeByteArrayToFile(file, bytes)
    
    // Read the temp file
    val input = new FileInputStream(path)

        ////////// Do something with it //////////

    // Remove the temp file
    if (!file.delete()) {
        println("Cannot delete temporary file !")
    }
} catch {
    case _: Throwable => println("An I/O error occured")