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,我发现它更详细。