gpt4 book ai didi

scala - 如何将空 NAN 或无限值替换为 Spark Scala 中的默认值

转载 作者:行者123 更新时间:2023-12-04 16:47:15 28 4
gpt4 key购买 nike

我正在将 csvs 读入 Spark,并将架构设置为所有 DecimalType(10,0) 列。当我查询数据时,出现以下错误:

NumberFormatException: Infinite or NaN

如果我的数据框中有 NaN/null/infinite 值,我想将它们设置为 0。我该怎么做?这就是我尝试加载数据的方式:

var cases = spark.read.option("header",false).
option("nanValue","0").
option("nullValue","0").
option("positiveInf","0").
option("negativeInf","0").
schema(schema).
csv(...

如有任何帮助,我们将不胜感激。

最佳答案

如果您在多个列中有NaN 值,您可以使用na.fill() 来填充默认值

例子:

  val spark =
SparkSession.builder().master("local").appName("test").getOrCreate()

import spark.implicits._

val data = spark.sparkContext.parallelize(
Seq((0f,0f, "2016-01-1"),
(1f,1f, "2016-02-2"),
(2f,2f, "2016-03-21"),
(Float.NaN,Float.NaN, "2016-04-25"),
(4f,4f, "2016-05-21"),
(Float.NaN,Float.NaN, "2016-06-1"),
(6f,6f, "2016-03-21"))
).toDF("id1", "id", "date")

data.na.fill(0).show
+---+---+----------+
|id1| id| date|
+---+---+----------+
|0.0|0.0| 2016-01-1|
|1.0|1.0| 2016-02-2|
|2.0|2.0| null|
|0.0|0.0|2016-04-25|
|4.0|4.0|2016-05-21|
|0.0|0.0| 2016-06-1|
|6.0|6.0|2016-03-21|
+---+---+----------+

关于scala - 如何将空 NAN 或无限值替换为 Spark Scala 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296484/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com