我有一个通过以下操作转换的数据集:
dataset.groupBy("userID", "itemID", "relevance")
.agg(functions.max("value").as("value"));
结果我得到这样的数据集:
+------+------+-----+-------------------+
|userID|itemID|value| relevance|
+------+------+-----+-------------------+
| 3| 1| 5.0| 0.2132007163556104|
| 3| 1| 5.0| 0.2132007163556104|
| 3| 2| 5.0| 0.1111111111111111|
| 3| 2| 5.0| 0.2222222222222222|
| 3| 3| 5.0| 0.3434343434343434|
| 3| 3| 1.0| 0.3434343434343434|
| 3| 4| 1.0| 0.5555555555555555|
| 3| 4| 5.0| 0.4999999999999994|
但考虑到必须选择MAX“相关性”,我需要改进我的查询以删除重复项。但是在“相关性”相等的情况下,必须选择MAX“值”。 最后我应该得到这样的数据集:
+------+------+-----+-------------------+
|userID|itemID|value| relevance|
+------+------+-----+-------------------+
| 3| 1| 5.0| 0.2132007163556104|
| 3| 2| 5.0| 0.2222222222222222|
| 3| 3| 5.0| 0.3434343434343434|
| 3| 4| 1.0| 0.5555555555555555|
对于一个愚蠢无聊的问题感到抱歉,但有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
我已将数据集转换为JavaPairRDD<元组2<整数,整数>,Tuple2<双人间,双人间> >然后我使用了方法reduceByKey(x-> ...),其中...描述了所有逻辑。不漂亮,但它确实有效。