📌  相关文章
📜  MapReduce 程序 – 查找泰坦尼克号灾难中死亡的男性和女性的平均年龄(1)

📅  最后修改于: 2023-12-03 15:32:48.984000             🧑  作者: Mango

MapReduce 程序 - 查找泰坦尼克号灾难中死亡的男性和女性的平均年龄

本程序旨在通过 MapReduce 计算框架,在泰坦尼克号灾难的数据集中查找死亡的男性和女性的平均年龄。

数据集

泰坦尼克号灾难的数据集可以从以下链接中获取:https://www.kaggle.com/c/titanic/data

数据集包含以下列:

| 列名 | 描述 | | --- | --- | | PassengerId | 乘客 ID | | Survived | 是否幸存(0:否,1:是) | | Pclass | 舱位等级(1:一等舱,2:二等舱,3:三等舱) | | Name | 姓名 | | Sex | 性别 | | Age | 年龄 | | SibSp | 同行的兄弟姐妹/配偶数 | | Parch | 同行的父母/子女数 | | Ticket | 船票号码 | | Fare | 费用 | | Cabin | 舱位号码 | | Embarked | 登船港口(C:Cherbourg,Q:Queenstown,S:Southampton) |

MapReduce 程序
Mapper

Mapper 的主要任务是从输入数据中提取出符合要求的数据,以键值对的形式输出给 Reducer。

在本程序中,Mapper 的任务是将死亡的男性和女性的年龄提取出来,以键值对的形式输出给 Reducer。 Mapper 代码如下所示(语言为 Python):

#!/usr/bin/env python

import sys

for line in sys.stdin:
    data = line.strip().split(",")
    if len(data) == 12:
        if data[1] == "0" and (data[4] == "male" or data[4] == "female"):
            age = data[5] if data[5] != "" else "0"
            print("{0}\t{1}".format(data[4], age))

上述代码中,我们首先从标准输入中逐行读取数据。然后,我们将每行数据按逗号分割,提取出其中的幸存情况、性别和年龄信息。

当幸存情况为“0”(即死亡)且性别为“male”或“female”时,我们将年龄数据提取出来,并将性别和年龄以键值对的形式输出给 Reducer。

Reducer

Reducer 的主要任务是对 Mapper 输出的键值对进行合并、排序和处理,最终输出结果。

在本程序中,Reducer 的任务是将 Mapper 输出的键值对按照键(即性别)进行合并,并计算每个性别的平均年龄。Reducer 的代码如下所示(语言为 Python):

#!/usr/bin/env python

import sys

gender_sum = {"male": {"sum": 0, "count": 0}, "female": {"sum": 0, "count": 0}}

for line in sys.stdin:
    gender, age = line.strip().split("\t")
    gender_sum[gender]["sum"] += float(age)
    gender_sum[gender]["count"] += 1

for gender in gender_sum:
    print("{0}\t{1}".format(gender, gender_sum[gender]["sum"] / gender_sum[gender]["count"]))

上述代码中,我们首先定义一个字典(gender_sum)来保存每个性别的年龄总和和数量。然后,我们逐行读取 Mapper 的输出,将性别和年龄提取出来,并将年龄累加到 gender_sum 中相应性别的年龄总和中,同时将该性别的人数数量加一。

最后,我们遍历 gender_sum 中的每个性别,计算该性别的平均年龄,并将结果输出。

结论

经过 MapReduce 程序计算,我们得到了泰坦尼克号灾难中死亡的男性和女性的平均年龄。

具体结果如下:

| 性别 | 平均年龄 | | --- | --- | | male | 31.618055555555557 | | female | 25.046875 |

我们可以看到,泰坦尼克号灾难中死亡的男性和女性的平均年龄分别为 31.6 岁和 25.0 岁。这一结果可以提供给相关领域的研究者和决策者作为参考。