Привет, я застрял в реализации пользовательского условия по искровому DF.По сути, я хочу пометить столбец как 0 или 1 на основе значения Null, присутствующего в столбце, т. Е. Если любой столбец
содержит значение null, состояние, соответствующее этой строке, будет равно 0, иначе 1
val someData = Seq(
Row(8, "bat"),
Row(64, "mouse"),
Row(null, "rat")
)
val someSchema = List(
StructField("number", IntegerType, true),
StructField("word", StringType, true)
)
val someDF = sparkSession.createDataFrame(
sparkSession.sparkContext.parallelize(someData),
StructType(someSchema)
)
val fieldList: Seq[Column] = Seq(col("word"),col("number"))
val df = fieldList.foldLeft(inputDf)(
(inputDf, f) => {
dfin = inputDf.withColumn(Status, lit(0))
dfin
.withColumn(
Status,
when(f.isNotNull and col("status").isin(0), 0).otherwise(1)
)
}
, но проверяется на основе последнего столбца в fieldList
, но должно быть похоже на
col 1 col2 status
zyx . pqe . 0
null . zyz . 1
xdc . null 1
null null 1