在 Python Spark 中连接来自两个不同 RDD 的字符串
Concatenate strings from two different RDD in Python Spark
假设我有 2 个 rdds:
第一个 rdd 由 html 请求的字符串组成:
rdd1 :
serverIP:80 clientIP1 - - [10/Jun/2016:10:47:37 +0200] "GET /path/to/page1 [...]"
serverIP:80 clientIP2 - - [11/Jun/2016:11:25:12 +0200] "GET /path/to/page2 [...]"
...
第二个 rdd 只是整数:
rdd2 :
0.025
0.56
...
我想逐行连接字符串以获得第三个 rdd,如下所示:
rdd3 :
serverIP:80 clientIP1 - - [10/Jun/2016:10:47:37 +0200] "GET /path/to/page1 [...]" 0.025
serverIP:80 clientIP2 - - [11/Jun/2016:11:25:12 +0200] "GET /path/to/page2 [...]" 0.56
...
顺便说一句,这个作业是一个流作业。也就是说,我不想以某种 sql table 或其他方式永久存储数据。
知道如何解决这个问题吗?
提前致谢!
编辑: 对于尝试加入 Dstream 而不是 rdd 的人,请看一下:
如果你可以依靠两个 rdd 的序列来匹配你可以使用 zip:
val rdd1 = sc.parallelize(List("a", "b", "c"))
val rdd2 = sc.parallelize(List(1.1, 1.2, 1.3))
val rdd3 = rdd1.zip(rdd2).map({case (s, d) => s + " " + d})
rdd3.collect() foreach println
// a 1.1
// b 1.2
// c 1.3
假设我有 2 个 rdds: 第一个 rdd 由 html 请求的字符串组成:
rdd1 :
serverIP:80 clientIP1 - - [10/Jun/2016:10:47:37 +0200] "GET /path/to/page1 [...]"
serverIP:80 clientIP2 - - [11/Jun/2016:11:25:12 +0200] "GET /path/to/page2 [...]"
...
第二个 rdd 只是整数:
rdd2 :
0.025
0.56
...
我想逐行连接字符串以获得第三个 rdd,如下所示: rdd3 :
serverIP:80 clientIP1 - - [10/Jun/2016:10:47:37 +0200] "GET /path/to/page1 [...]" 0.025
serverIP:80 clientIP2 - - [11/Jun/2016:11:25:12 +0200] "GET /path/to/page2 [...]" 0.56
...
顺便说一句,这个作业是一个流作业。也就是说,我不想以某种 sql table 或其他方式永久存储数据。
知道如何解决这个问题吗?
提前致谢!
编辑: 对于尝试加入 Dstream 而不是 rdd 的人,请看一下:
如果你可以依靠两个 rdd 的序列来匹配你可以使用 zip:
val rdd1 = sc.parallelize(List("a", "b", "c"))
val rdd2 = sc.parallelize(List(1.1, 1.2, 1.3))
val rdd3 = rdd1.zip(rdd2).map({case (s, d) => s + " " + d})
rdd3.collect() foreach println
// a 1.1
// b 1.2
// c 1.3