Spark Scala将多列合并为单列

ubof19bj  于 2023-10-18  发布在  Scala
关注(0)|答案(1)|浏览(162)

我期待合并2个单独的行到一个Sparkscala。我已经尝试了按机制分组,但没有成功。
输入:

col1       col2  col3   col4    col5
2023-02-27  LHR  SFO    931 
2023-02-27  LHR  SFO             977

预期输出:

col1        col2    col3    col4    col5
2023-02-27  LHR     SFO      931    977
1szpjjfi

1szpjjfi1#

我不知道你在寻找什么逻辑。然而,这个想法似乎是按一定数量的列进行分组,然后聚合其他列,忽略空值。
可以这样做:

val df = Seq(
    ("2023-02-27", "LHR", "SFO", Some("931"), None ),
    ("2023-02-27", "LHR", "SFO", None, Some("977"))
).toDF("col1", "col2", "col3", "col4", "col5")

df.groupBy("col1", "col2", "col3")
  .agg(first('col4, ignoreNulls=true) as "col4",
       first('col5, ignoreNulls=true) as "col5"
  ).show()
+----------+----+----+----+----+                                                
|      col1|col2|col3|col4|col5|
+----------+----+----+----+----+
|2023-02-27| LHR| SFO| 931| 977|
+----------+----+----+----+----+

相关问题