如何将十进制逻辑类型读入spark数据帧

How to read decimal logical type into spark dataframe

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

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


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

MyField: binary (nullable = true)


如何将其转换为小数类型?

您可以在读取操作中指定模式:

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")))