2017-06-05 63 views
0

来了我有一个amount值,我们正在从文件中读取并尝试在控制台上打印。火花SQL长双值与指数

当我们尝试打印时,它显示为Exponential,另一个问题是当我们试图将其转换为null

输入值:

{"amt":987654321111.0} 

示例代码:

df.show(); 
df.registerTempTable("input"); 
DataFrame outputDF = sqlContext.sql("select cast(amt as decimal) from input"); 
outputDF.show(); 

输出:

+----------------+ 
|    amt| 
+----------------+ 
|9.87654321111E11| 
+----------------+ 

root 
|-- amt: double (nullable = true) 

root 
|-- amt: decimal(10,0) (nullable = true) 

+----+ 
| amt| 
+----+ 
|null| 
+----+ 
+0

@ zero323:你可以看看这个吗? – Shankar

回答

0

解决使用StructType createDecimalType方法的问题。

StructType schema = new StructType().add("amt", DataTypes.createDecimalType(38,10)); 

DataFrame df = sqlContext.read().schema(schema).json("test.json");