Python 中 Spark RDD 的列操作

Column operation on Spark RDDs in Python

我有一个包含许多列(例如数百列)的 RDD,并且我的大部分操作都在列上,例如我需要从不同的列创建许多中间变量。

最有效的方法是什么?

我从 CSV 文件创建 RDD:

dataRDD = sc.textFile("/...path/*.csv").map(lambda line: line.split(",”))

例如,这将给我一个如下所示的 RDD:

123, 523, 534, ..., 893 
536, 98, 1623, ..., 98472 
537, 89, 83640, ..., 9265 
7297, 98364, 9, ..., 735 
...... 
29, 94, 956, ..., 758 

我需要创建一个新列或一个变量作为 calculatedvalue = 2ndCol+19thCol 并创建一个新的 RDD。

123, 523, 534, ..., 893, calculatedvalue 
536, 98, 1623, ..., 98472, calculatedvalue 
537, 89, 83640, ..., 9265, calculatedvalue 
7297, 98364, 9, ..., 735, calculatedvalue 
...... 
29, 94, 956, ..., 758, calculatedvalue

最好的方法是什么?

只要一张地图就够了:

rdd = sc.parallelize([(1,2,3,4), (4,5,6,7)])

# just replace my index with yours
newrdd = rdd.map(lambda x: x + (x[1] + x[2],)) 

newrdd.collect() # [(1,2,3,4,6), (4,5,6,7,12)]