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
对象已经有 sum
、variance
、sampleStddev
和sampleVariance
个字段。所以你可以做
statCounter = myData.stats()
results.append(statCounter.sum())
results.append(statCounter.min())
results.append(statCounter.variance())
results.append(statCounter.sampleStdev())
results.append(statCounter.sampleVariance())
你好所以我有示例代码:
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
对象已经有 sum
、variance
、sampleStddev
和sampleVariance
个字段。所以你可以做
statCounter = myData.stats()
results.append(statCounter.sum())
results.append(statCounter.min())
results.append(statCounter.variance())
results.append(statCounter.sampleStdev())
results.append(statCounter.sampleVariance())