を使用していますはい、方法があります。最初のScala用スパークAPIで..
をsplit機能を使用して,
による最初の列、2つのデータフレーム(2回where
を使用して)には、このデータフレームを分割し、単に最初の列に、この新しいデータフレームに参加を分割し、次のようにそれはなるだろう:
val x1status = Seq(
("kv,true",45),
("bm,true",65),
("mp,true",75),
("kv,null",450),
("bm,null",550),
("mp,null",650)).toDF("x1", "x2")
val x1 = x1status
.withColumn("split", split('x1, ","))
.withColumn("x1", 'split getItem 0)
.withColumn("status", 'split getItem 1)
.drop("split")
scala> x1.show
+---+---+------+
| x1| x2|status|
+---+---+------+
| kv| 45| true|
| bm| 65| true|
| mp| 75| true|
| kv|450| null|
| bm|550| null|
| mp|650| null|
+---+---+------+
val trueDF = x1.where('status === "true").withColumnRenamed("x2", "true")
val nullDF = x1.where('status === "null").withColumnRenamed("x2", "null")
val result = trueDF.join(nullDF, "x1").drop("status")
scala> result.show
+---+----+----+
| x1|true|null|
+---+----+----+
| kv| 45| 450|
| bm| 65| 550|
| mp| 75| 650|
+---+----+----+