如何将十进制逻辑类型读入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")))
我有一个包含十进制逻辑类型的 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")))