火花:降低双精度

时间:2019-10-18 14:48:50

标签: apache-spark apache-spark-sql

我想将双字段连成字符串字段,以降低精度(6个数字)。

例如从     lat = 38.04900573076923     lon = -4.039010807692307

我想要     位置= 38.049005,4.090108

奇怪的是,这无法按预期进行:

df.withColumn("location", concat(col("lat").cast(DecimalType(6, 6)), lit(","), col("lon").cast(DecimalType(6, 6)))

结果,位置始终为空。

看着DoubleType,它没有继承自DecimalType,所以听起来很合逻辑。

做这件事的好方法是什么?

Thx。

1 个答案:

答案 0 :(得分:0)

如何舍入取整值呢?

df.withColumn("location", concat(round(col("lat"), 6), lit(","), round(col("lon"), 6)))

您可能需要将round()强制转换为字符串,但这可能是固有的。