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

过滤计数等于输入文件 rdd Spark 的列

Spark Core应用解析

Spark Scala 根据另一个 RDD 的列删除一个 RDD 中的行

[Spark][Python]RDD flatMap 操作例子

第2天Python实战Spark大数据分析及调度-RDD编程