Spark-仅在1行中将2个数据框行分组

时间:2018-10-13 15:53:55

标签: scala apache-spark dataframe

我有以下数据框

id   col1   col2  col3   col4
1    1      10    100    A    
1    1      20    101    B
1    1      30    102    C
2    1      10    80     D
2    1      20    90     E
2    1      30    100    F
2    1      40    104    G

因此,我想返回一个新的数据框,其中我可以在同一行中单独包含相同的值(col1,col2),还可以创建一个新列,并在两个col3列上进行一些运算,例如< / p>

    id(1) col1(1) col2(1) col3(1) col4(1) id(2) col1(2) col2(2) col3(3) col4(4) new_column 
    1       1       10      100     A      2       1       10     80    D       (100-80)*100
    1       1       20      101     B      2       1       20     90    E       (101-90)*100 
    1       1       30      102     C      2       1       30     100   F       (102-100)*100  
    -       -       -        -      -      2       1       40     104   G        -

我尝试排序,按(col1,col2)分组,但是分组返回的RelationalGroupedDataset我无法执行任何聚合函数。因此,我将不胜感激。我正在使用Scala 2.11,谢谢!

1 个答案:

答案 0 :(得分:0)

如何将df与自身连接? 像这样:

df.as("left")
  .join(df.as("right"), Seq("col1", "col2"), "outer")
  .where($"left.id" =!= $"right.id")