利用scala在嵌套Dataframe中应用格式数函数摆脱指数符号

f4t66c6m  于 2021-05-26  发布在  Spark
关注(0)|答案(0)|浏览(270)

我有一个包含十进制字段数组的Dataframe

object TestDecimal extends App{
  val sparkSession = SparkSession.builder().appName("test").master("local[*]").getOrCreate()
import sparkSession.implicits._
case class D(amount:BigDecimal,price:BigDecimal)
case class c(list: List[D])
val d = Seq(c(List(D(0.00000000000,0.000034344)))).toDF()
d.show()
d.printSchema()
}


此Dataframe自动将十进制转换为指数表示法(0e-18)。不能在我的终端系统中使用。所以我想把这个Dataframe格式化成精确的值表示法。我试过下面的方法,效果很好。但它使用一些外部库。我的案子不能用这个。

import org.apache.spark.sql.functions._
val df1 = d.withColumn("list", transform($"list",elem => elem.withField("amount", format_number(elem.getField("amount"),8))))

上面的解决方案与我一起使用mse_2.11和spark-hofs_2.11库。我的输出Dataframe包含与输入完全相同的符号(不是指数符号)。
我想知道在spark本身是否有任何有效的解决方案,它也可以像数组类型的嵌套Dataframe一样工作。
有人能帮我摆脱这种复杂Dataframe(数组类型)上的指数符号吗??

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题