1

我有一个包含十进制逻辑类型的 Avro 文件,如下所示:

"type":["null",{"type":"bytes","logicalType":"decimal","precision":19,"scale":2}]


当我尝试使用 scala spark 库读取文件时,df 模式是

MyField: binary (nullable = true)


如何将其转换为十进制类型?

4

1 回答 1

1

您可以在读取操作中指定架构:

val schema = new StructType()
    .add(StructField("MyField", BooleanType))

或者你可以投列

val binToInt: String => Integer = Integer.ParseInt(_, 2);
val binToIntegerUdf = udf(binToInt);

df.withColumn("Myfield", binToIntegerUdf(col("MyField").cast("string")))
于 2018-11-16T13:21:07.783 回答