多源数据组合 Clump

Apache
Scala
跨平台
2015-05-12
红薯

Clump 是一个 Scala 库,通过一个优雅和高效的方式将来自多个源的数据组合在一起。

例如:

import io.getclump.Clump

// Creates sources using the batched interfaces
val tracksSource = Clump.source(tracksService.fetch _)(_.id)
val usersSource = Clump.source(usersService.fetch _)(_.id)

def renderTrackPosts(userId: Long) = {

  // Defines the clump
  val clump: Clump[List[EnrichedTrack]] = enrichedTrackPosts(userId)

  // Triggers execution
  val future: Future[Option[List[EnrichedTrack]]] = clump.get

  // Renders the response
  future.map {
    case Some(trackPosts) => render.json(trackPosts)
    case None             => render.notFound
  }
}

// Composes a clump with the user's track posts
def enrichedTrackPosts(userId: Long) =
  for {
    trackPosts <- Clump.future(timelineService.fetchTrackPosts(userId))
    enrichedTracks <- Clump.traverse(trackPosts)(enrichedTrack(_))
  } yield {
    enrichedTracks
  }

// Composes an enriched track clump
def enrichedTrack(trackId: Long) =
  for {
    track <- tracksSource.get(trackId)
    creator <- usersSource.get(track.creatorId)
  } yield {
    new EnrichedTrack(track, creator)
  }
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Machine Learning笔记(一) 监督学习、非监督学习

监督学习、非监督学习、回归、分类

2015/09/25 13:15
1K
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部