Тип возврата для присваивания val для СДР - PullRequest
0 голосов
/ 31 октября 2019

Я играю со свечным кодом, чтобы узнать больше о тасовании. Я написал следующий код, чтобы увидеть, как формируются этапы, если есть оператор if-else. Я объявил val result, чтобы результат мог быть присвоен ему позже в операторе if. Но я не уверен насчет типа возвращаемого значения.

Существует ли абстрактный класс для всех СДР?

val conf = new SparkConf().setMaster("local").setAppName("spark shuffle")
val sc = new SparkContext(conf)

val d = sc.parallelize(0 until 1000).map(i => (i%1000, i))
val x = d.reduceByKey(_+_)

val count = 1
val result: RDD // What is the correct return type here?

if(count == 1)
  {
    result= d.rightOuterJoin(x)
    result.collect()

  }

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вы можете избежать присвоения var (должно быть var, а не val)

val conf = new SparkConf().setMaster("local").setAppName("spark shuffle")
val sc = new SparkContext(conf)

val d = sc.parallelize(0 until 1000).map(i => (i%1000, i))
val x = d.reduceByKey(_+_)

val count = 1

if (count == 1) {
    d.rightOuterJoin(x).collect()
}
0 голосов
/ 31 октября 2019

d - это СДР [(Int, Int)]

Затем выполнение сокращения по ключу дает то же самое, но с уменьшением

Выполнение правильного внешнего соединения затем дает вам СДР (Int, (Option [Int], Int)) - т. Е. Для каждого ключа значения L и R (с опцией L, необязательной, если ее нет)

Таким образом, сбор данных дает вам массив одинаковых вещей

Документация API нелегка для всех этих функций, есть много общих типов и много неявных типов. Я бы порекомендовал вам либо использовать IDE, которая будет подсказывать вам типы, либо использовать инструмент, который дает вам консоль, в которой вы можете попробовать фрагменты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...