pass蓄能器触发udf

3b6akqbq  于 2021-07-09  发布在  Spark
关注(0)|答案(0)|浏览(148)

这是我尝试做的一个简化版本。我想在我的自定义项中做一些计数。因此,一种方法是将长累加器传递给udf,并在反序列化protobuf函数中增加if-else循环中的acumulator。但却无法使用语法。有人能帮我吗?有没有更好的办法?

def deserializeProtobuf(raw_data: Byte[Array]) = {

    val input_stream = new ByteArrayInputStream(raw_data)
    parsed_data = CustomClass.parseFrom(input_stream)

    if (condition 1 related to parsed_data) {
        < increment variable1 > 
    } 
    else if (condition 2 related to parsed_data) {
        < increment variable2 > 
    } 
    else {
        < increment variable3 > 
    }

}

val decode = udf(deserializeProtobuf _)

val deserialized_data = ds.withColumn("data", decode(col("protobufData")))

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题