我有一个包含十进制字段数组的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(数组类型)上的指数符号吗??
暂无答案!
目前还没有任何答案,快来回答吧!