Python中Spark RDD的列操作

时间:2016-02-06 07:53:43

标签: python apache-spark pyspark rdd

我有一个带有多个列的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

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

只需一张地图即可:

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)]