Apache spark 如何在spark中组合两列数据集
我有这样一个spark数据集:Apache spark 如何在spark中组合两列数据集,apache-spark,apache-spark-dataset,Apache Spark,Apache Spark Dataset,我有这样一个spark数据集: > df.show() +------+------+ | No1 | No2 | +------+------+ | 001 | null | | 002 | 002 | | 003 | 004 | | null | 005 | +------+------+ 我想得到一个新的列No3,它包含列No1和No2中的值,条件是复制No1,如果它有一个值,否则如果它为null,则使用No2中的值 如何执行此操作?您可以检查No1列是否为null
> df.show()
+------+------+
| No1 | No2 |
+------+------+
| 001 | null |
| 002 | 002 |
| 003 | 004 |
| null | 005 |
+------+------+
我想得到一个新的列No3,它包含列No1和No2中的值,条件是复制No1,如果它有一个值,否则如果它为null,则使用No2中的值
如何执行此操作?您可以检查
No1
列是否为null
。如果其null
则从No2
import org.apache.spark.sql.functions._
val data = spark.sparkContext.parallelize(Seq(
("001", null),
("002", "002"),
("003", "004"),
(null, "005")
)).toDF("No1", "No2")
val resultDf = data.withColumn("No3", when($"No1".isNull, $"No2").otherwise($"No1"))
resultDf.show
输出:
+----+----+---+
|No1 |No2 |No3|
+----+----+---+
|001 |null|001|
|002 |002 |002|
|003 |004 |003|
|null|005 |005|
+----+----+---+
希望这有帮助 我想你要找的是联合
import org.apache.spark.sql.functions._
val data = spark.sparkContext.parallelize(Seq(
("001", null),
("002", "002"),
("003", "004"),
(null, "005")
)).toDF("No1", "No2")
val resultDf = data.withColumn("No3", coalesce($"No1", $"No2"))
resultDf.show
import org.apache.spark.sql.functions._
val data = spark.sparkContext.parallelize(Seq(
("001", null),
("002", "002"),
("003", "004"),
(null, "005")
)).toDF("No1", "No2")
val resultDf = data.withColumn("No3", coalesce($"No1", $"No2"))
resultDf.show