【问题标题】:Java Mapreduce group by compositekey and sortJava Mapreduce按复合键分组并排序
【发布时间】:2016-06-15 23:35:53
【问题描述】:

我有一个 mapreduce 作业,它进行一些处理并生成 city:fruit 的复合键(实现 WritableComparable)以及关联的计数。现在我想将它与辅助 mapreduce 作业链接起来,该作业确定每种水果类型的计数最高的城市。

mapreduce 作业 1 的复合键输出示例:

+---------------------+-------+
| city:fruit composite| count |
+---------------------+-------+
| london:apples       | 3     |
+---------------------+-------+
| london:bannanas     | 2     |
+---------------------+-------+
| london:oranges      | 15    |
+---------------------+-------+
| charleston:apples   | 20    |
+---------------------+-------+
| charleston:bannanas | 1     |
+---------------------+-------+
| charleston:oranges  | 3     |
+---------------------+-------+
| chicago:bannanas    | 17    |
+---------------------+-------+
| chicago:apples      | 5     |
+---------------------+-------+
| chicago:oranges     | 11    |
+---------------------+-------+

作业 2 的期望输出:

+------------+----------+
| city       | fruit    |
+------------+----------+
| london     | oranges  |
+------------+----------+
| charleston | apples   |
+------------+----------+
| chicago    | bannanas |
+------------+----------+

我怎样才能做到这一点?在我的 SQL 头脑中,复合键将是两列,一列表示城市,一列表示水果。我会按水果分组,排序,然后抓住数量最多的那一行。我无法弄清楚这如何转化为 mapreduce 世界。任何建议将不胜感激!

【问题讨论】:

    标签: java hadoop mapreduce hadoop2 composite-key


    【解决方案1】:

    流程

    1. 将您的数据读入新的 map reduce 作业中
    2. 将您的信息拆分为作为键的城市和水果的复合值:计数
    3. 在减少阶段,您可以获得手头城市的所有价值。现在您可以循环遍历所有这些值。将它们分开并记住最大的水果数量和水果。
    4. 现在将数据写入数据库或 HDFS

    请注意,每个 reducer 都会写入一个单独的文件。之后您可以轻松地将它们与 HDFS 功能合并。也有可能只有一个 reducer,但我不喜欢这种方式,因为它不可扩展。

    【讨论】:

    • 这完全正确,谢谢!有没有办法在将 fuit:count 组合发送到减速器之前对其进行排序?
    • 是的,但这会有点多写。请提出一个新问题,如果您在此处提供链接,我会尝试回答。
    • 但是给你一个提示,SecondaryOrdering是你要搜索的关键字。这不会在 map 阶段而是在 reduce 阶段之前排序
    • 我对二次排序/排序进行了一些研究,但似乎找不到专注于复合值的材料。我发布了一个新问题:stackoverflow.com/questions/37891385/…
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2010-10-15
    • 2021-10-11
    • 2019-03-27
    • 1970-01-01
    • 2021-03-14
    • 2017-02-25
    • 2020-08-01
    相关资源
    最近更新 更多