你好我对Spark和大数据编程都很陌生。我正在开发一个带有spark的报告生成应用程序,它从s3位置加载来自序列文件的大量数据,并进行一些过滤和标准匹配。我需要帮助我们如何从不同的RDD获取或查找数据。 我有1个RDD我已经过滤了数据。和其他rdd是原始的。
JavaPairRDD<String,List<DepartmentBudget>> result = criteriaRDD.mapToPair(new reportCriteriaMatching());
这给了我正确的报告数据,其中String是报告名称,DepartmentBudget列表是部门ID和部门名称所在的数据。
JavaPairRDD<String,Iterable<Employee>> departmentEmpoyeeRDD = employeeRDD.groupBy(emp -> emp.getDepartment().getDepartmentname());
在上述部门的EpoyeeRDD中,我们根据部门名称对所有员工进行了分组。
现在我想从resultRDD创建报告,我需要从每个部门获得所有员工。
我尝试使用广播变量,但是departmentEmpoyeeRDD太大而无法播放。它的大小约为13GB。所以,我通过广播这个RDD获得了OOM例外。
请建议!
谢谢。