さて、あなただけの下の私の例を確認し、毎年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))
だから同じ*データ*を繰り返したいが、年が1つ増えたら、右か? –
RDDの署名は何ですか? –
@AlbertoBonsantoはい、そうです。 – Sacrulen