Apache spark 在spark中,通过组合其他对象来构建对象RDD的最佳方法是什么?

Apache spark 在spark中,通过组合其他对象来构建对象RDD的最佳方法是什么?,apache-spark,rdd,Apache Spark,Rdd,例如,我的RDD为(RoomId(key),RoomData对象(value)),RDD为(RoomId(key),StudentData对象(value)) 我希望最终得到一个对象(值)的RoomId(key)RDD,该对象(值)包含房间和房间中的学生数据 在mapreduce中,我将: 提取房间和学生的所有数据 使用对象所属的RoomId和“a”或“a”的组合键 “b”(RoomId+a)用于RoomData对象和(RoomId+b)StudentData 减速器中的对象 我可以依靠订单,

例如,我的RDD为(RoomId(key),RoomData对象(value)),RDD为(RoomId(key),StudentData对象(value))

我希望最终得到一个对象(值)的RoomId(key)RDD,该对象(值)包含房间和房间中的学生数据

在mapreduce中,我将:

  • 提取房间和学生的所有数据
  • 使用对象所属的RoomId和“a”或“a”的组合键 “b”(RoomId+a)用于RoomData对象和(RoomId+b)StudentData 减速器中的对象
  • 我可以依靠订单,将第一个对象作为RoomData
    对象,并添加其余的值,如
    学生,使用RoomData.addStudent()将其添加到该RoomData对象 方法
  • 然后输出最终的RoomData对象
但在火花中:

我曾想过,如果我创建了一些uber Room domain对象,该对象将在聚合方法中创建,并保存给定RoomId的RoomData和StudentData的总和,我可能会将两个RDD连接或附加在一起,然后通过键聚合新的RDD,但我认为有更好的方法

我可以向RoomData对象添加一个addStudent方法,该方法将获取一个StudentData对象并将该数据添加到RoomData对象,事实上这就是我想要做的。但我应该/将如何以火花方式将这些与RDD结合起来

示例数据

1号房间 室友-100 科目-法语 教师-女学生女士 时间-下午12时

2号房间 室友-101 科目-西班牙语 教师-拉迪亚特女士学校 时间-凌晨1:00

学生1 室友-101 姓名-鲍勃·史密斯

学生2 室友-100 姓名-Ryan Strong

学生3 室友-100 姓名-简·史密斯

roomRDD中的房间studentRDD中的学生不能更改原始RDD

希望结果是包含以下内容的某个RDD:

1号房间 室友-100 科目-法语 教师-女学生女士 时间-下午12时 学生-瑞安·斯特朗、简·史密斯

2号房间 室友-101 科目-西班牙语 教师-拉迪亚特女士学校 时间-凌晨1:00
学生-Bob Smith

请分享示例数据和预期结果output@mtoto好了!你能用
sc.parallelize()重写它吗?