我在scala和spark做这个。
我有和 Dataset
的 Tuple2
作为 Dataset[(String, Map[String, String])]
.
下面是 Dataset
.
(A, {1->100, 2->200, 3->100})
(B, {1->400, 4->300, 5->900})
(C, {6->100, 4->200, 5->100})
(B, {1->500, 9->300, 11->900})
(C, {7->100, 8->200, 5->800})
如果注意到,元组的键或第一个元素可以重复。同样,相同元组键的对应Map在Map中可以有重复的键(tuple2的第二部分)。
我想创造一个最终的 Dataset[(String, Map[String, String])]
. 输出应如下所示(来自上面的示例)。此外,Map的最后一个键的值将被保留(选中b和c),并且之前针对b和c的相同键将被删除。
(A, {1->100, 2->200, 3->100})
(B, {4->300, 1->500, 9->300, 11->900, 5->900})
(C, {6->100, 4->200, 7->100, 8->200, 5->800})
如果需要澄清,请告诉我。
2条答案
按热度按时间avkwfej41#
使用Dataframe:
印刷品
由于涉及到两个聚合,基于rdd的答案可能会更快
lxkprmvk2#
通过使用rdd,
使用Dataframe,