Nar*_*ren 0 scala apache-spark
我有一个RDD:
RDD1 = (big,data), (apache,spark), (scala,language) ...
Run Code Online (Sandbox Code Playgroud)
我需要用时间戳映射它
RDD2 = ('2015-01-01 13.00.00')
Run Code Online (Sandbox Code Playgroud)
所以我得到了
RDD3 = (big, data, 2015-01-01 13.00.00), (apache, spark, 2015-01-01 13.00.00), (scala, language, 2015-01-01 13.00.00)
Run Code Online (Sandbox Code Playgroud)
我为此写了一个简单的map函数:
RDD3 = RDD1.map(rdd => (rdd, RDD2))
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我认为这不是可行的方法.怎么做?我是Scala和Spark的新手.谢谢.
你可以使用zip:
val rdd1 = sc.parallelize(("big","data") :: ("apache","spark") :: ("scala","language") :: Nil)
// RDD[(String, String)]
val rdd2 = sc.parallelize(List.fill(3)(new java.util.Date().toString))
// RDD[String]
rdd1.zip(rdd2).map{ case ((a,b),c) => (a,b,c) }.collect()
// Array((big,data,Fri Jul 24 22:25:01 CEST 2015), (apache,spark,Fri Jul 24 22:25:01 CEST 2015), (scala,language,Fri Jul 24 22:25:01 CEST 2015))
Run Code Online (Sandbox Code Playgroud)
如果你想要与每个元素相同的时间戳rdd1:
val now = new java.util.Date().toString
rdd1.map{ case (a,b) => (a,b,now) }.collect()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |