Apache spark 火花:减少双精度

Apache spark 火花:减少双精度,apache-spark,apache-spark-sql,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))) 因此,位置始终为空 看看Dou

我想将双字段合并为字符串字段,以降低精度(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

换成四舍五入值怎么样

df.withColumn("location", concat(round(col("lat"), 6), lit(","), round(col("lon"), 6)))
您可能需要将
round()
强制转换为字符串,但这可能是固有的