我期待合并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
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| +----------+----+----+----+----+
1条答案
按热度按时间1szpjjfi1#
我不知道你在寻找什么逻辑。然而,这个想法似乎是按一定数量的列进行分组,然后聚合其他列,忽略空值。
可以这样做: