Che*_*rry 10 scala apache-spark apache-spark-sql
后show
命令火花打印如下:
+-----------------------+---------------------------+
|NameColumn |NumberColumn |
+-----------------------+---------------------------+
|name |4.3E-5 |
+-----------------------+---------------------------+
Run Code Online (Sandbox Code Playgroud)
有没有办法将NumberColumn
格式改为类似的东西0.000043
?
Ram*_*jan 13
您可以使用format_number
函数作为
import org.apache.spark.sql.functions.format_number
df.withColumn("NumberColumn", format_number($"NumberColumn", 5))
Run Code Online (Sandbox Code Playgroud)
这里5是你想要显示的小数位
正如您在上面的链接中看到的那样,format_number
函数返回一个字符串列
format_number(列x,int d)将
数字列x格式化为'#,###,###.##'等格式,舍入到d位小数,并将结果作为字符串列返回.
如果您不需要,
,可以调用regexp_replace
定义为的函数
regexp_replace(列e,字符串模式,字符串替换)
将与regexp匹配的指定字符串值的所有子字符串替换为rep.
并用它作为
import org.apache.spark.sql.functions.regexp_replace
df.withColumn("NumberColumn", regexp_replace(format_number($"NumberColumn", 5), ",", ""))
Run Code Online (Sandbox Code Playgroud)
因此,应删除大数字的逗号(,
).
您可以使用cast
以下操作:
val df = sc.parallelize(Seq(0.000043)).toDF("num")
df.createOrReplaceTempView("data")
spark.sql("select CAST (num as DECIMAL(8,6)) from data")
Run Code Online (Sandbox Code Playgroud)
相应地调整精度和比例。
归档时间: |
|
查看次数: |
15036 次 |
最近记录: |