2016-03-22 3 views
1

私は、以下のようなRDDを読んでいるタブ区切りのデータを持っています。この例では12行(2010年の各月に1行)があるとします。Sparkでのデータ展開

データは

1/2010 Red 500 Up 
2/2010 Blue 300 Left 
3/2010 Red 650 Down 
4/2010 Green 200 Left 
5/2010 Blue 250 Right 
6/2010 Blue 300 Up 
...  ... ... ... 

私は効果的にサイズを倍に、次のようなものをすることによって、より大きなRDDをモックアップするために、このデータを使用しようとしています... myRDDに読み込みます。自身のRDDの組合と

var biggerRDD = myRDD.union(myRDD) 

私は基本的に1年下半期に日付をインクリメントする(だけでなく、本来の2010年の日付ではないだけにまたがって表示されるように日付をインクリメントしたいのですが、2011年。

私はこれを行う方法がわからないですし、私の試みで成功していない。

+0

だから同じ*データ*を繰り返したいが、年が1つ増えたら、右か? –

+0

RDDの署名は何ですか? –

+0

@AlbertoBonsantoはい、そうです。 – Sacrulen

答えて

0

さて、あなただけの下の私の例を確認し、毎年1ずつ増加するmapを使用する必要があります。

val rdd = sc.parallelize(List(
    ("1/2010", "Red", 500, "Up"), 
    ("2/2010", "Blue", 300, "Left"), 
    ("3/2010", "Red", 650, "Down"), 
    ("4/2010", "Green", 200, "Left"), 
    ("5/2010", "Blue", 250, "Right"), 
    ("6/2010", "Blue", 300, "Up") 
)) 

val completeRDD = rdd.union(rdd.map{ 
    case (date: String, color: String, value: Int, direction: String) => { 
    val separator = "/" 
    val dt = date.split(separator) 
    val newDate = dt(0) + separator + (dt(1).toInt + 1) 
    (newDate, color, value, direction) 
    } 
}) 

completeRDD.collect 
/* 
(1/2010,Red,500,Up) 
(2/2010,Blue,300,Left) 
(3/2010,Red,650,Down) 
(4/2010,Green,200,Left) 
(5/2010,Blue,250,Right) 
(6/2010,Blue,300,Up) 
(1/2011,Red,500,Up) 
(2/2011,Blue,300,Left) 
(3/2011,Red,650,Down) 
(4/2011,Green,200,Left) 
(5/2011,Blue,250,Right) 
(6/2011,Blue,300,Up) 
*/ 
ところで0

は、各観測を解析した結果は、次のようなものでなければなりません:

"1/2010\tBlue\t500\tUp".split("\t") 
//res14: Array[String] = Array(1/2010, Blue, 500, Up) 

そしてmapによって簡単にコミットすることができTupleに変換するのは簡単です:

val xdd = sc.parallelize(List("1/2010\tBlue\t500\tUp", 
           "2/2010\tRed\t600\tDown")) 
val mdd = xdd.map{ 
    case (str) => { 
    val parsed = str.split("\t") 
    (parsed.head, parsed(1), parsed(2).toInt, parsed.last) 
    } 
} 

mdd.collect 
// res25: Array[(String, String, Int, String)] = Array((1/2010,Blue,500,Up), (2/2010,Red,600,Down)) 
関連する問題