我正在使用 Apache spark 中的巨大数据集(包含 332 个字段)与大约 1000 万条记录的 scala(除了一个字段,其余 331 个可以为空)。但我想用空白字符串(“”)替换 null。由于我有大量字段,实现这一目标的最佳方法是什么?我想在导入此数据集时处理空值,因此在执行转换或导出到 DF 时我会很安全。所以我创建了具有 332 个字段的案例类,处理这些空值的最佳方法是什么?我可以使用 Option(field).getOrElse(""),但我想这不是最好的方法,因为我有大量的字段。谢谢!!
我们可以使用udf
这样的安全列
val df = Seq((1,"Hello"), (2,"world"), (3,null)).toDF("id", "name")
val safeString: String => String = s => if (s == null) "" else s
val udfSafeString = udf(safeString)
val dfSafe = df.select($"id", udfSafeString($"name").alias("name"))
dfSafe.show
如果您有很多列,并且其中一列是关键列。我们可以这样做。
val safeCols = df.columns.map(colName =>
if (colName == "id") col(colName)
else udfSafeString(col(colName)).alias(colName))
val dfSafe = df.select(safeCols:_*)
dfSafe.show
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句