我有一个十进制列“TOT_AMT”,在我的 avro 模式中定义为类型“字节”和逻辑类型“十进制”。
在使用 databricks spark-avro 在 spark 中创建数据框后,当我尝试使用 sum 函数对TOT_AMT列求和时,它会抛出"Function sum requires numeric types not Binarytype" 错误。
该列在 avro 模式中定义如下,
name="TOT_AMT","type":["null",{ "type":"bytes","logicaltype":"decimal","precision":20,"scale":10}]
我正在创建数据框并总结如下,
val df=sqlContext.read.format("com.databricks.spark.avro").load("input dir")
df.agg(sum("TOT_AMT")).show()
在创建数据帧时,十进制值似乎被读取为 Binarytype。在这种情况下,我们如何对这些十进制列执行数字运算?是否可以将这个 Byte 数组转换为 BigDecimal,然后进行计算。