私が持っている機能がScalaエラーは型の不一致を変換します。見つかった:()⇒イテレータ[ロング]は必要:[?] scala.collection.immutable.Iterableの
から呼び出され`
def getFollowers(userId: Long): Try[Set[Long]] = {
Try({
val followerIds = mutable.Set[Long]()
var cursor = -1L
do {
val client = AkkaStreamTwitterClient()
val res = client.friendsFollowers().getFollowersIDs(userId, cursor, 5000)
res.getIDs.toList.foreach(x => followerIds.add(x))
if (res.hasNext) {
cursor = res.getNextCursor
}
else {
cursor = -1 // Exit the loop
}
} while (cursor > 0)
val immutableFollower = scala.collection.immutable.Set(followerIds.toSet.toArray:_*)
immutableFollower
})
}
`
機能
`
Source(() =>
AkkaStreamTwitterHelper.getFollowers(userId).get.toIterable.iterator)
.grouped(100)
.map(x => AkkaStreamTwitterHelper.lookupUsers(x.toList))
.mapConcat(identity(_))
.runForeach(x => output.offer(x.getScreenName))
.onComplete({
case _ =>
Console.println(s"Fetched ${output.size()} profiles")
val endTime = System.nanoTime()
Console.println(s"Time taken: ${(endTime - startTime)/1000000000.00}s")
system.terminate()
Runtime.getRuntime.exit(0)
}) (ec)
}
`
ライン「ソース」は、エラーを与える
Scalaのエラー変換型の不一致。見つかった:()⇒イテレータ[ロング]必要:[?] scala.collection.immutable.Iterableのあなたのバージョンに応じて、Source.fromIterator
が必要になる場合があります
http://blog.abhinav.ca/blog/2015/02/19/scaling-with-akka-streams/
(単に
getFollowers(userId).get.toIterable.iterator()
にそれを変更)この機能を適用する必要があり、これは、しかしラインに同じエラーを動かす以外のエラーを修正しました。 .mapConcat(identity(_))。 –