And*_*ans 1 concurrency scala future
我是斯卡拉的新手.它有助于减少代码并提供功能语言的元素来处理数据.但是,我无法找到并行执行lst期货的方法.我的列表是List [Future [String]]类型.如何让这个列表并行执行?
val futures=(data.map { x => this.breakString(x) }).toList
Run Code Online (Sandbox Code Playgroud)
未来定义为:
def breakString(inX:Object):Future[String]=Future {
//get new jsonObject
val x =inX.asInstanceOf[String]
val jmap=JacksMapper.readValue[Map[String,AnyRef]](x)
val dataArr:Array[String]=jmap.get(this.rowcolumn).asInstanceOf[String].split(token)
val map=dataArr.map { x => (positions.get(dataArr.indexOf(x).asInstanceOf[String]),x) }.toMap
map.put(hashKey, jmap.get(hashKey).asInstanceOf[String])
//write out positions
JacksMapper.writeValueAsString(map)
}
Run Code Online (Sandbox Code Playgroud)
你可以用Future.traverse.
从Scala文档引用:
这对于执行并行映射非常有用.例如,将函数并行应用于列表的所有项目
Future.traverse(data)(breakString)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |