gpt4 book ai didi

python - 优化Spark数值函数(python)

转载 作者:行者123 更新时间:2023-12-02 21:40:53 26 4
gpt4 key购买 nike

Spark的新手,并希望了解优化以下代码的最佳方法。
我有一个5GB文件的文件,其中有50列,我从其中取出了30列(在下面的可变位置)。然后在其上运行各种统计信息。

def numStats(position):
results = []
for lines in position:
stats = [0,0,0,0,0,0,0,0]
myData = dataSplit.map(lambda arr: (arr[lines]))
if myData.take(1) != [u'']:
myData3 = myData.map(lambda line: line.split(',')).map(lambda fields: ("Column", float(fields[0]))).map(lambda (column, value) : (value)).persist(StorageLevel.MEMORY_AND_DISK)
stats[0] = myData3.sum()
results.append(stats[0])
stats[1] = myData3.min()
results.append(stats[1])
stats[2] = myData3.max()
results.append(stats[2])
stats[3] = myData3.mean()
results.append(stats[3])
stats[4] = myData3.stdev()
results.append(stats[4])
stats[5] = myData3.variance()
results.append(stats[5])
stats[6] = myData3.sampleStdev()
results.append(stats[6])
stats[7] = myData3.sampleVariance()
results.append(stats[7])

最佳答案

  • 您可以使用aggregate函数(http://spark.apache.org/docs/1.2.0/api/python/pyspark.html#pyspark.RDD)对数据进行一次传递来计算许多统计信息。这是使用aggregateByKey函数的类似方法的示例:How to optimize this code on spark?
  • 每次将RDD保留一列。为什么不缓存myData RDD?每次构造myData3 RDD时它都会实现,这意味着30倍!

  • 最后,使用 aggregate函数,您将能够一次通过数据来计算所有统计信息

    关于python - 优化Spark数值函数(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819015/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com