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)]
我有一个包含许多列(例如数百列)的 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)]