列を比較して重複を削除して2つのデータフレームをマージする方法を教えてください。Spark Dataframesの式を使用して重複する行をマージする方法
I have two dataframes with same column names
a.show()
+-----+----------+--------+
| name| date|duration|
+-----+----------+--------+
| bob|2015-01-13| 4|
|alice|2015-04-23| 10|
+-----+----------+--------+
b.show()
+------+----------+--------+
| name| date|duration|
+------+----------+--------+
| bob|2015-01-12| 3|
|alice2|2015-04-13| 10|
+------+----------+--------+
私は何をしようとしていることは同じ名前の持続時間は、時間の合計となります二つの条件 1.Forを適用することによって、一意の行のみを表示するには、2つのデータフレームのマージされています。 2.同じ名前の場合、最終日は最新の日付になります。
Final output will be
final.show()
+-------+----------+--------+
| name | date|duration|
+----- +----------+--------+
| bob |2015-01-13| 7|
|alice |2015-04-23| 10|
|alice2 |2015-04-13| 10|
+-------+----------+--------+
I followed the following method.
//Take union of 2 dataframe
val df =a.unionAll(b)
//group and take sum
val grouped =df.groupBy("name").agg($"name",sum("duration"))
//join
val j=df.join(grouped,"name").drop("duration").withColumnRenamed("sum(duration)", "duration")
and I got
+------+----------+--------+
| name| date|duration|
+------+----------+--------+
| bob|2015-01-13| 7|
| alice|2015-04-23| 10|
| bob|2015-01-12| 7|
|alice2|2015-04-23| 10|
+------+----------+--------+
最終結果は何ですか? – mrsrinivas
こんにちはSrini、check final.show() 私は同じ名前の重複行を削除するために、重複行の期間を合計し、日付列に最新の日付のみを表示しています。 –