使用Spark自定义JSON输出格式

时间:2019-02-11 14:09:18

标签: json apache-spark jackson

我有一个带有一堆BigDecimal值的数据集。我想将这些记录输出到JSON文件中,但是当我这样做时,BigDecimal值通常会写有尾随零(123.4000000000000),但是我们必须遵守的规范不允许这样做(由于原因我不明白)。

我正在尝试查看是否有一种方法可以覆盖如何将数据打印到JSON。 目前,我最好的想法是使用JACKSON将每个记录转换为字符串,然后使用df.write().text(..)而不是JSON写入数据。

1 个答案:

答案 0 :(得分:1)

我建议在写入JSON之前将Decimal类型转换为String。

下面的代码在Scala中,但是您可以在Java中轻松使用它

import org.apache.spark.sql.types.StringType

# COLUMN_NAME is your DataFrame column name.

val new_df = df.withColumn('COLUMN_NAME_TMP', df.COLUMN_NAME.cast(StringType)).drop('COLUMN_NAME').withColumnRenamed('COLUMN_NAME_TMP', 'COLUMN_NAME')