我正在寻找一个解决方案,我需要填充空的数字字段中没有任何价值的使用Spark。我写的代码如下:
val myDF = sqlContext.sql("from mystg.my_acct_table select id,amt,tot_amt where id=12345")
myDF.map(row => {val row1 = row.getAs[Double]("tot_amt")
val my_tot_amt = {
if(row1.isNaN())
null.asInstanceOf[Double]
else
Math.abs(row1.toDouble)
}
Row(row(0),row(1),my_tot_amt)
})
我还尝试将上述逻辑放在第行(第(0)行、第(1)行、我的总金额)。
Row(row(0),row(1),(if(row1.isNaN())
null.asInstanceOf[Double]
else
Math.abs(row1.toDouble)))
但我得到的输出是| 1163.35 | 0.0|
预期输出为| 8687992537618075 | 1163.35 | null|
1条答案
按热度按时间sshcrbum1#
null.asInstanceOf[Double]
是0.0
. 只是不要投:应该工作(这使得
my_tot_amt
Any
;val my_tot_amt: java.lang.Double = ...
更精确,但在这种特殊情况下不必)。而且,我想你会
0.0
哪里row("tot_amt")
已经是了null
; 这是故意的吗?