有:
有什么方法可以找出哪个特定单元格导致一行被标记为损坏?
使用默认方法,我只能看到(在损坏的列中)输入行,而没有任何提示该行中哪个单元格有问题。
(如果有任何与此平台相关的建议,我无法使用 Databricks)
唯一的事情是检查 DF 中的列是否为空值,并在所有列上使用 FoldLeft 连接到单个输出字段,并将空值的列聚合到单个字段。
但是,如果这些字段也可以为空,那么这没有帮助。
当然,您也会在记录中检查损坏的列。
val badDf = someDF.filter($"_corrupt_record".isNotNull). ...apply foldLeft logic...
请参阅 https://www.sparkcodehub.com/spark/spark-dataframe-foldleft-foldright-guide 了解 FoldLeft 示例。
一些灵感,略有不同的示例:
val columns = Array("col1", "col2", "col3")
val totalCol = columns.foldLeft(lit(0)) {
(total, colName) => total + col(colName)
}
val dfTotal = df.withColumn("total", totalCol)
这已经是最好的了,并不是 100% 万无一失。