RDD中的十进制值解析

时间:2017-03-10 07:07:50

标签: scala apache-spark

我的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文件中的值不匹配(我尝试使用配置单元查询)。可能有什么问题。

0 个答案:

没有答案