Après la commande show
, l’imprimante imprime les éléments suivants:
+-----------------------+---------------------------+
|NameColumn |NumberColumn |
+-----------------------+---------------------------+
|name |4.3E-5 |
+-----------------------+---------------------------+
Existe-t-il un moyen de changer le format NumberColumn
en quelque chose comme 0.000043
?
vous pouvez utiliser format_number
fonction comme
import org.Apache.spark.sql.functions.format_number
df.withColumn("NumberColumn", format_number($"NumberColumn", 5))
ici 5 sont les décimales que vous voulez montrer
Comme vous pouvez le voir dans le lien ci-dessus, les fonctions format_number
renvoient une colonne string
numéro_format (Colonne x, int d)
Met en forme la colonne numérique x dans un format tel que '#, ###, ###. ##', arrondi à d décimales, et renvoie le résultat sous la forme d'une colonne de chaîne.
Si vous n'avez pas besoin de ,
, vous pouvez appeler la fonction regexp_replace
qui est définie par
regexp_replace (Colonne e, modèle de chaîne, remplacement de chaîne)
Remplacez toutes les sous-chaînes de la valeur de chaîne spécifiée qui correspond à regexp avec rep.
et l'utiliser comme
import org.Apache.spark.sql.functions.regexp_replace
df.withColumn("NumberColumn", regexp_replace(format_number($"NumberColumn", 5), ",", ""))
Ainsi, comma (,
) doit être supprimé pour les grands nombres.
Vous pouvez utiliser l'opération cast
comme ci-dessous:
val df = sc.parallelize(Seq(0.000043)).toDF("num")
df.createOrReplaceTempView("data")
spark.sql("select CAST (num as DECIMAL(8,6)) from data")
ajustez la précision et l'échelle en conséquence.
df.createOrReplaceTempView("table")
outDF=sqlContext.sql("select CAST (num as DECIMAL(15,6)) from table")
6 précisions décimales dans ce cas.