Python PySpark在RDD上运行多个函数

Python PySpark在RDD上运行多个函数,python,hadoop,apache-spark,Python,Hadoop,Apache Spark,您好,我有示例代码: for column in position: myData = dataSplit.map(lambda arr: (arr[column]))\ .map(lambda line: line.split(','))\ .map(lambda fields: ("Column", fields[0]))\ .map(lambda (column, value) : value)\ .filter(la

您好,我有示例代码:

for column in position:
    myData = dataSplit.map(lambda arr: (arr[column]))\
        .map(lambda line: line.split(','))\
        .map(lambda fields: ("Column", fields[0]))\
        .map(lambda (column, value) : value)\
        .filter(lambda line : filterWithAccum(line))\
        .map(lambda (value) : float(value))\
        .persist(StorageLevel.MEMORY_AND_DISK)
    results.append(myData.sum())
    results.append(myData.stats())
    results.append(myData.variance())
    results.append(myData.sampleStdev())
    results.append(myData.sampleVariance())

是否有一种方法可以在一个passmultiple函数中运行,而不是在每个1函数中运行5个pass?坚持可以节省很多时间,但我觉得必须有更好的方法来压缩这些。我最初有.min().max().mean(),但是.stats()为您做了这些,所以已经压缩了一些

我不明白你的问题,但是
.stats()
方法返回的
StatCounter
对象已经有
sum
variance
samplestdev
sampleVariance
字段。所以你可以

statCounter = myData.stats()
results.append(statCounter.sum())
results.append(statCounter.min())
results.append(statCounter.variance())
results.append(statCounter.sampleStdev())
results.append(statCounter.sampleVariance())

当我运行.stats()时,我得到的结果是:(count:4488,mean:1.0,stdev:0.0,max:1.0,min:1.0)看看ScalaDoc而不是PythonDoc,我发现它更详细。