我有一个Avro文件,其中包含一个十进制逻辑类型,如下所示:
"type":["null",{"type":"bytes","logicalType":"decimal","precision":19,"scale":2}]
当我尝试使用Scala Spark库读取文件时,df模式为
MyField: binary (nullable = true)
如何将其转换为十进制类型?
答案 0 :(得分: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")))