如何使用Map / Reduce或任何其他方法为rdd查找每个列的MIN和MAX

时间:2019-05-02 07:38:50

标签: pyspark rdd

我已将近100个CSV文件读入一个RDD

rdd=sc.textFile("file:///C:/Users\pinjala/Documents/Python Scripts/Files_1/*.csv")

我想为RDD中的每一列查找Min和Max。将近100列。

有人可以建议我如何找到不同列的RDD的最小值和最大值。

当我使用 rdd.collect(),我能够将rdd视为包含第一个元素中的列名和列表中其余元素中每个列的值的列表。

rdd=sc.textFile("file:///C:/Users\pinjala/Documents/Python Scripts/Files_1/*.csv")

1 个答案:

答案 0 :(得分:0)

如果您提供了一些示例数据,那就更好了。 无论如何,我只是模拟了,这里是代码-

new_list = []
list_p = [['John',19,1,9,20,68],['Jack',3,2,5,12,99]] #list of tuple
rdd = sc.parallelize(list_p) #Build a RDD
print(rdd.collect()) # [['John', 19, 1, 9, 20, 68], ['Jack', 3, 2, 5, 12, 99]]
for p in list_p:
    header = p[0]
    p.remove(p[0]) 
    min_p = sc.parallelize(p).min()
    max_p = sc.parallelize(p).max()
    new_list.append("["+header+","+str(min_p)+","+str(max_p)+"]")
print(new_list) # ['[John,1,68]', '[Jack,2,99]']