【问题标题】:Custom Formatting of JSON output using Spark使用 Spark 自定义 JSON 输出格式
【发布时间】:2019-07-05 01:18:56
【问题描述】:
我有一个包含一堆 BigDecimal 值的数据集。我想将这些记录输出到 JSON 文件,但是当我这样做时,BigDecimal 值通常会用尾随零写入(123.4000000000000),但我们必须遵守的规范不允许这样做(因为我不这样做)不懂)。
我正在尝试查看是否有一种方法可以覆盖数据打印到 JSON 的方式。
目前,我最好的想法是使用 JACKSON 将每条记录转换为字符串,然后使用 df.write().text(..) 而不是 JSON 写入数据。
【问题讨论】:
标签:
json
apache-spark
jackson
【解决方案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')