2015-03-10 1 views
1

Привет Итак у меня есть пример кода:PySpark Запуск нескольких функций на 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 проходит запуская каждую 1 функцию? Сохранение сохраняет много времени, но я чувствую, что должен быть лучший способ конденсировать их. Первоначально у меня был .min() .max() .mean(), но .stats() делает это для вас, чтобы сжать несколько вниз.

ответ

3

Я не понимаю ваш вопрос, однако StatCounter объект, возвращаемый методом .stats() уже 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()) 
+0

Когда я бегу .stats() все, что я получаю: (cкачиваний: 4488, средний: 1.0, StDev: 0,0, макс: 1,0, мин: 1,0) – theMadKing

+0

Никогда не возражаете работал большой спасибо! – theMadKing

+0

Посмотрите на ScalaDoc, а не на PythonDoc, я нашел его более подробным. –

 Смежные вопросы

  • Нет связанных вопросов^_^