多源数据组合 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)

暂无评论

暂无资讯

暂无问答

GWAS: 阿尔兹海默症和代谢指标在大规模全基因组数据的遗传共享研究

今天要讲的一篇是发表于 Hum Genet 的 "Shared genetic architecture between metabolic traits and Alzheimer's disease: a large-scale genome-wide cross-trait analysis" 。很中规中矩的...

2019/03/09 14:23
44
0
Python机器学习(基础篇---监督学习(线性分类器))

监督学习经典模型 机器学习中的监督学习模型的任务重点在于,根据已有的经验知识对未知样本的目标/标记进行预测。根据目标预测变量的类型不同,我们把监督学习任务大体分为分类学习与回归预测...

2019/03/13 21:59
21
0
Machine Learning笔记(一) 监督学习、非监督学习

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

2015/09/25 13:15
1.2K
1
《重构:改善既有代码的设计》-学习笔记一(+实战解析)

我不是个伟大的程序员;我只是个有着一些优秀习惯的好程序员而己 本人比较直接,不说虚的,直接上干货。 目录 Duplicated Code(重复的代码) Long Method(过长函数) Long Parameter List(...

2018/05/23 21:37
0
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部