【问题标题】:Converting nested null values to empty strings inside dataframe spark将嵌套的空值转换为数据框火花内的空字符串
【发布时间】:2019-09-18 20:15:31
【问题描述】:

我希望将嵌套在字符串数组中的空值转换为 spark 中的空字符串。数据在数据框中。我计划在使数据帧 null 安全后运行 reduce 函数,不确定这是否有助于回答问题。我正在使用火花 1.6。

架构:

root
|-- carLineName: array (nullable = true)
|    |-- element: string (containsNull = true)

示例输入:

+--------------------+
|carLineName         |
+--------------------+
|[null,null,null]    |
|[null, null]        |
|[Mustang, null]     |
|[Pilot, Jeep]       |

期望的输出:

+--------------------+
|carLineName         |
+--------------------+
|[,,]                | 
|[,]                 |
|[Mustang,]          |
|[Pilot, Jeep]       |

我的尝试:

val safeString: Seq[String] => Seq[String] = s => if (s == null) "" else s
val udfSafeString = udf(safeString)

【问题讨论】:

    标签: scala apache-spark null apache-spark-sql user-defined-functions


    【解决方案1】:

    UDF 的输入是字符串序列,而不是单个字符串。既然是这种情况,您需要map 覆盖它。你可以这样做:

    val udfSafeString = udf((arr: Seq[String]) => {
      arr.map(s => if (s == null) "" else s)
    })
    
    df.withColumn("carLineName", udfSafeString($"carLineName"))
    

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多