2015-11-01 163 views
0

創建頂點給定一個字符串阿帕奇星火從字符串

val s = "My-Spark-App" 

如何頂點與星火以下方式產生的呢?

「我 - 」, 「伊蘇」, 「SP」, 「溫泉」, 「平價」, 「方舟」, 「RK-」, 「千」, 「-Ap」, 「應用」

這個問題可以並行嗎?

回答

3

這僅僅是一個簡單的滑動在一個字符串的事:

val n: Int = 3 

val vertices: Seq[(VertexId, String)] = s.sliding(n) 
    .zipWithIndex 
    .map{case (s, i) => (i.toLong, s)} 
    .toSeq 

sc.parallelize(vertices) 

可以在問題被並行化?

是的,但是如果它是單個字符串,它很可能沒有意義。如果你想要:

import org.apache.spark.rdd.RDD 

val vertices: RDD[(VertexId, String)] = sc.parallelize(s) 
    .sliding(n) 
    .zipWithIndex 
    .map{case (cs, i) => (i, cs.mkString)} 
+0

謝謝你的回答。如果字符串很大,這是否合理? –

+0

如果巨大意味着千兆字節(2^32 - 1元素是一個限制無論如何),那麼肯定。 – zero323

相關問題