2017-06-05 28 views
0

私はamountの値を持っています。これはファイルから読み取っていて、コンソールで印刷しようとしています。Spark SQLのlong double値が指数関数で返されます

印刷しようとすると、Exponentialと表示され、キャストしようとするときもう1つ問題が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"); 
関連する問題