Один
Сначала я читаю твиты и анализирую их в классе дел с помощью карты в своей функции синтаксического анализа parseTweet
:
val tweets = sc.textFile("/home/gakuo/Documents/bigdata/NintendoTweets").map(parseTweet)
Two
Затем я использую функцию для сопряжения RDD, в результате чего получается пара RDD вида (hashtags, likes)
через карту внутри toPairRdd:
val pairedRDD = toPairRdd(tweets).persist()
Вопрос
После прочтения в моем СДР в ( one ) выше, поможет ли это сохранить его, как то, что в ( two ) является преобразованием?Я думаю, что поскольку оба являются ленивыми, то сохранение на самом деле является пустой тратой памяти.
Три
После вычисления pairRDD я хочу вычислить оценки для каждого хэштега: toScores
использует reduceByKey
val scores = toScores(pairedRDD).persist()
Вопрос
Я использую reduceByKey
.Этот метод pairRDD приводит к тасованию?Я прочитал статью, в которой говорится:
"может произойти случайное перемешивание, когда результирующий СДР зависит от других элементов того же СДР или другого СДР. Cogroup, groupWith, join, leftOuterJoin, rightOuterJoin, groupByKey,reduByKey, комбинироватьByKey, отличный, пересечение, перераспределение, объединение, приводящее к тасованию. Чтобы избежать тасовок для этих видов операций, убедитесь, что преобразование следует тому же разделу, что и исходный СДР "
В той же статье также говоритсяreduceByKey
следует тому же разделу, что и исходный СДР.