java—使用mapreduce计算平均值大于50的条目数

dfty9e19  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(169)

我有以下集合,其结构类似于:

student1 = {
    "First_Name": "John",
    "Last_Name": "Doe",
    "Courses": [
        {
            "Course_Id": 123,
            "Course_Name": "Computer Science",
            "Has_Completed_Course" = true,
            "Date_Of_Course_Completion" = Date("2019-12-15"),

            "Modules" : [
                {
                    "Module_Name" : "Operating Systems",
                    "Mark_Given" : 70
                },
                {
                    "Module_Name" : "Programming",
                    "Mark_Given" : 43
                }
            ]
        },
        {
            "Course_Id": 284,
            "Course_Name": "Mathematics",
            "Has_Completed_Course" = true,
            "Date_Of_Course_Completion" = Date("2018-06-25"),

            "Modules" : [
                {
                    "Module_Name" : "Geometry",
                    "Mark_Given" : 55
                },
                {
                    "Module_Name" : "Algebra",
                    "Mark_Given" : 63
                }
            ]
        }
    ]
};

我想生成一个mapreduce,它返回在同一年完成同一课程并且平均分数大于50的学生数(仅适用于该课程的模块)。这是否可以在mapreduce中实现,或者对于这样的东西,聚合是否更容易,如果可以,如何实现?
如果有帮助的话,下面是我想以sql格式执行的操作:

SELECT Course_ID, Course_Name, YEAR, COUNT(Student_Id) AS Pass_Rate FROM
    (
        SELECT ctbs.Course_ID, EXTRACT(YEAR FROM ctbs.Date_Of_Course_Completion) YEAR, ctbs.Student_Id, Course_Name FROM tblModulesTakenByStudent mtbs
        INNER JOIN tblCoursesTakenByStudent ctbs ON mtbs.Student_Id = ctbs.Student_Id
        LEFT JOIN tblCourse c ON ctbs.Course_Id = c.Course_Id
        WHERE ctbs.Has_Completed_Course = 'Y'
        GROUP BY ctbs.Course_ID, Course_Name, EXTRACT(YEAR FROM Date_Of_Course_Completion), ctbs.Student_Id
        HAVING AVG(Mark_Given) > 50
    )
GROUP BY Course_Id, Course_Name, YEAR
ORDER BY Course_Id, Course_Name, YEAR;

我目前正在用mongodb在java实现中编写这个mapreduce,但是编写所需的函数而不使用java实现的任何细微差别也是可以的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题