Ari*_*rik 5 scala binaryfiles apache-spark
我需要从二进制文件中提取数据。
我用过binaryRecords并得到了RDD[Array[Byte]]。
从这里我想将每条记录解析为
case class (Field1: Int, Filed2 : Short, Field3: Long)
我怎样才能做到这一点?
假设没有分隔符,Scala 中的 Int 为 4 字节,Short 为 2 字节,long 为 8 字节。假设您的二进制数据的结构(每行)为 Int Short Long。您应该能够获取字节并将它们转换为您想要的类。
import java.nio.ByteBuffer
val result = YourRDD.map(x=>(ByteBuffer.wrap(x.take(4)).getInt,
ByteBuffer.wrap(x.drop(4).take(2)).getShort,
ByteBuffer.wrap(x.drop(6)).getLong))
Run Code Online (Sandbox Code Playgroud)
这使用 Java 库将字节转换为 Int/Short/Long,如果需要,您可以使用其他库。