2016-02-06 85 views
1

我有一個RDD,其中有很多列(例如數百個),而且我的大部分操作都在列上。我需要從不同列創建許多中間變量。Python中Spark Spark 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 

我需要建立一個新的列或變量calculatevalue = 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

只需一張地圖就足夠了:

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