【发布时间】:2018-10-11 14:13:05
【问题描述】:
我需要在谷歌数据流中读取二进制文件, 我只需要读取文件并将每 64 字节解析为一条记录,并在数据流中每 64 字节二进制文件的每个字节中应用一些逻辑。
我在 spark 中尝试过同样的事情,代码 smape 如下:
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder()
.appName("RecordSplit")
.master("local[*]")
.getOrCreate()
val df = spark.sparkContext.binaryRecords("< binary-file-path>", 64)
val Table = df.map(rec => {
val c1= (convertHexToString(rec(0)))
val c2= convertBinaryToInt16(rec, 48)
val c3= rec(59)
val c4= convertHexToString(rec(50)) match {
case str =>
if (str.startsWith("c"))
2020 + str.substring(1).toInt
else if (str.startsWith("b"))
2010 + str.substring(1).toInt
else if (str.startsWith("b"))
2000 + str.substring(1).toInt
case _ => 1920
}
【问题讨论】:
-
欢迎来到 SO。请提供一个最小、完整和可验证的示例。 向我们展示您最近尝试的代码以及您遇到的问题。并解释为什么结果不是你所期望的。编辑您的问题以包含代码,请不要在评论中添加它,因为它可能不可读。 stackoverflow.com/help/mcve 最好展示实际发生的事情,而不是描述您期望发生的事情。请包含代码和输出作为您问题的内容,而不是图片或外部链接。
标签: google-cloud-platform google-cloud-dataflow apache-beam dataflow