PySpark在RDD上运行多个函数

2024-04-23 11:11:38 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我有示例代码:

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

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


Tags: 方法lambda函数代码示例mapfieldsvalue
1条回答
网友
1楼 · 发布于 2024-04-23 11:11:38

我不明白你的问题,但是.stats()方法返回的StatCounter对象已经有了sumvariancesampleStddev和{}字段。所以你能做到

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

相关问题 更多 >