You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中如何将JSON里的Double类型转为字符串(避免科学计数法)

解决Spark SQL中Double转字符串出现科学计数法的问题

针对大数值Double转字符串时自动变为科学计数法的问题,给你几个实用的解决方法:

  • 用format_number函数格式化
    该函数可指定保留的小数位数,默认会添加千分位分隔符,不需要的话可以用正则去掉:

    -- 保留两位小数,带千分位格式
    SELECT format_number(amount, 2) AS amount_str FROM your_table;
    -- 移除千分位逗号,得到纯数字字符串
    SELECT regexp_replace(format_number(amount, 2), ',', '') AS amount_str FROM your_table;
    
  • 用printf函数控制输出格式
    通过标准的printf格式字符串指定小数位数,强制以普通数字格式输出:

    SELECT printf("%.2f", amount) AS amount_str FROM your_table;
    
  • 读取JSON时直接指定Decimal类型
    从根源避免使用Double类型存储,读取JSON时自定义Schema,将amount设为Decimal类型,后续转字符串自然不会出现科学计数法:

    // Scala示例,其他语言逻辑一致
    import org.apache.spark.sql.types.{StructType, StructField, DecimalType, StringType}
    val schema = new StructType()
      .add("amount", DecimalType(18, 2))
      .add("currency", StringType)
    val df = spark.read.schema(schema).json("your_json_file_path")
    // 直接转换为字符串即可
    df.select(cast(col("amount") as String).alias("amount_str")).show()
    

内容的提问来源于stack exchange,提问作者Rohit Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:16:00