“怎么做?”;col(a)==null?第(b)栏:第(c)栏;Spark SQL'中的列操作;使用Java的数据帧?

“怎么做?”;col(a)==null?第(b)栏:第(c)栏;Spark SQL'中的列操作;使用Java的数据帧?,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,在机器学习之前,我需要做一些数据清理,我的数据框如下所示: +-------+--------+---------+--------+-------+ | userid|artistid|playcount| badid| goodid| +-------+--------+---------+--------+-------+ |2158448|10006467| 1|10006467|1244705| |2144107|10009022| 5|10009022

在机器学习之前,我需要做一些数据清理,我的数据框如下所示:

+-------+--------+---------+--------+-------+ | userid|artistid|playcount| badid| goodid| +-------+--------+---------+--------+-------+ |2158448|10006467| 1|10006467|1244705| |2144107|10009022| 5|10009022|1024524| |1006831|10009473| 1|10009473|1010373| |2011584|10016312| 13|10016312|1000127| |2052189|10021776| 2|10021776|1082784| |2052189|10022667| 1|10022667|1082784| |1060325|10039984| 1|10039984|1001463| |2077268|10043655| 1|10043655|1000597| |1038421|10048281| 2|10048281|1256384| |2116983|10055238| 1|10055238|1003509| |2211143|10055238| 27|10055238|1003509| |1000083| 1006162| 2| 1006162|1048788| |1001371| 1006162| 1| 1006162|1048788| |1001411| 1006162| 1| 1006162|1048788| |1002138| 1006162| 3| 1006162|1048788| |1009943| 1006162| 2| 1006162|1048788| |1021747| 1006162| 4| 1006162|1048788| |1031726| 1006162| 1| 1006162|1048788| |1032062| 1006162| 2| 1006162|1048788| |1036948| 1006162| 1| 1006162|1048788| +-------+--------+---------+--------+-------+ +-------+--------+---------+--------+-------+ |userid | artistid | playcount | badid | goodid| +-------+--------+---------+--------+-------+ |2158448|10006467| 1|10006467|1244705| |2144107|10009022| 5|10009022|1024524| |1006831|10009473| 1|10009473|1010373| |2011584|10016312| 13|10016312|1000127| |2052189|10021776| 2|10021776|1082784| |2052189|10022667| 1|10022667|1082784| |1060325|10039984| 1|10039984|1001463| |2077268|10043655| 1|10043655|1000597| |1038421|10048281| 2|10048281|1256384| |2116983|10055238| 1|10055238|1003509| |2211143|10055238| 27|10055238|1003509| |1000083| 1006162| 2| 1006162|1048788| |1001371| 1006162| 1| 1006162|1048788| |1001411| 1006162| 1| 1006162|1048788| |1002138| 1006162| 3| 1006162|1048788| |1009943| 1006162| 2| 1006162|1048788| |1021747| 1006162| 4| 1006162|1048788| |1031726| 1006162| 1| 1006162|1048788| |1032062| 1006162| 2| 1006162|1048788| |1036948| 1006162| 1| 1006162|1048788| +-------+--------+---------+--------+-------+ 我需要生成一个包含当前所有列的新数据框,并在Java中添加一个新列。这个新“列”的逻辑如下:

IsNull(Col('badid')) ? Col('artistid') : Col('goodid') IsNull(Col('badid'))?Col('artistid'):Col('goodid')) 有什么建议吗?

您可以使用/:

when(col(“badid”).isNull(),col(“artistid”)。否则(col(“goodid”))
这相当于SQL
的情况下。。。否则

案例
当badid为NULL时,则为artistid
埃尔斯古迪德
结束

这是一个简短的回答。现在,我知道我需要在Java代码中“导入static org.apache.spark.sql.functions.*”,并使用这些API方法。谢谢!!