【发布时间】:2016-04-07 06:10:19
【问题描述】:
我需要将我的 RDD 中的一个字段映射到另一个映射 UserDAO.users 的另一个字段我试图找出这里的映射,但还不能返回 username。当我进行 foreach 打印 scala.concurrent.impl.Promise$DefaultPromise@7c4c5ddd
这是我的代码 sn-p:
rdd.map { l => {
l.map { case (k, v) => {
k match {
case "a_userid" => {
l.updated("a_username", userDAO.users.map(c => c.filter(f => f.userid == v.toInt)).map(y => y.map(e => e.username)))
}
case _ =>
}
}
}
}
}
基本上,
rdd - RDD[Map[String, String]]
UserDAO.users - Future[Seq[User]] - 其中 User 是一个案例类
并返回更新后的rdd - RDD[Map[String, String]]
--
知道如何解决这个问题吗?
谢谢
【问题讨论】:
-
您能指定变量的类型吗?具体来说,
rdd和userDAO.users。也请给出预期结果的类型。 -
@Aivean 更新了我的问题,谢谢
-
好的,下一个问题,
userDAO.users返回的用户序列有多大?有什么理由在工作节点上调用它(通过rdd.map)而不是事先实现它? -
@Aivean:
userDAO.users少于 2000 条记录,但我的 rdd 大约是 1100 万条记录。实现userDAO.users可能会起作用,但认为可以在不阻塞的情况下做到这一点? -
如果你期待具体的结果,你必须在某个地方等待(阻塞)。否则你会怎么想?最后有
RDD[Future[Map[String, String]]]或者Future[RDD[Map[String, String]]]?