Python 中 Spark RDD 的列操作
Posted
技术标签:
【中文标题】Python 中 Spark RDD 的列操作【英文标题】:Column operation on Spark RDDs in Python 【发布时间】:2016-02-06 07:53:42 【问题描述】:我有一个包含许多列(例如数百个)的 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
我需要创建一个新列或一个变量作为计算值 = 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)]
【讨论】:
以上是关于Python 中 Spark RDD 的列操作的主要内容,如果未能解决你的问题,请参考以下文章
python core-spark-preview-rdd.py
Spark Scala 根据另一个 RDD 的列删除一个 RDD 中的行