PySpark 运行 RDD 上的多个函数

PySpark Run Multiple Functions on an RDD

你好所以我有示例代码:

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())

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

我没听懂你的问题,但是 .stats() 方法返回的 StatCounter 对象已经有 sumvariancesampleStddevsampleVariance 个字段。所以你可以做

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