我的avro架构中有一个十进制列“TOT_AMT”,定义为“bytes”类型和逻辑类型“decimal”。
该列在avro架构中定义如下,
name="TOT_AMT","type":["null",{ "type":"bytes","logicaltype":"decimal","precision":20,"scale":10}]
我正在尝试阅读下面的avro文件
val rdd = sc.hadoopFile(
classOf[org.apache.avro.mapred.AvroInputFormat[MyAvroRecord]],
classOf[org.apache.avro.mapred.AvroWrapper[MyAvroRecord]],
classOf[org.apache.hadoop.io.NullWritable])(avropath)
打印RDD时,该值显示为字节数组。然后我尝试在像
这样的java程序中读取解析列byte[] a = "0.3".getBytes() // 0.3 is value seen in byte array in RDD
new BigDecimal(new BigInteger(a),18)
但是获得的值与avro文件中的值不匹配(我尝试使用配置单元查询)。可能有什么问题。