scala - 如何仅根据值的逻辑条件过滤键、值对并构造键的 rdd?
问题描述
val MED1_dates = medication.map{rec =>
val patientID = rec.patientID
(patientID, rec.date)
}
val MED1_lowest_dates = MED1_dates.reduceByKey{
case(d1,d2) => (
if(d1.before(d2)) d1 else d2
)
}
val MED2_dates = medication.map{rec =>
val patientID = rec.patientID
(patientID, rec.date)
}
val MED2_lowest_dates = MED1_dates.reduceByKey{
case(d1,d2) => (
if(d1.before(d2)) d1 else d2
)
}
val MED1_MED2_lowest_dates = MED1_lowest_dates.join(MED2_lowest_dates)
现在我需要从 MED1_MED2_lowest_dates 中过滤出患者 ID 的 RDD,其中 MED2 最低日期在 MED1 最低日期之前。怎么做?
解决方案
考虑以下代码,它可以满足您的问题。它使用一个示例 RDD 来演示这一点。您可以将类似的逻辑应用于您的问题。
val list = List((1 -> "Pune"),(2 -> "Mumbai"),(3 -> "Delhi"))
val rdd = sc.parallelize(list)
val filtered = rdd.filter{case (k,v) => (v.equals("Delhi"))}
// I HAVE USED collect as my RDD does not contain lot of data.
filtered.keys.collect
推荐阅读
- jquery - 解析错误:shell 脚本中第 1 行第 7 列的数字文字无效
- android - 为什么 cornetFamly 只适用于圆角的风格而不适用于切角的风格?
- amazon-web-services - 使用 ansible 并使用 aws profile 或 arn 获取 AWS SSM 参数
- email - 电子邮件服务器的最小 RAM
- angular - ng 测试失败
- python-3.x - 'WANDB_MODE' 不是内部或外部命令、可运行程序或批处理文件
- hadoop - 即使在添加新磁盘后 Hadoop 节点不健康问题
- javascript - 将大 int 数转换为单个数字的数组
- bluetooth - 如何使用 bluetoothctl 使用 MQTT 实时报告重复的接近信标
- python - python中基于条件的cumsum函数