Преобразование карты на спарде
Я применил преобразование карты к нижеприведенной RDD:
sc.parallelize(List((1,10),(2,20),(3,30),(4,40)));
с двумя разными подписями.
Случай 1:
res0.map({case (x,y)=>(x,y+1)}).collect;
который дает следующий результат:
Array[(Int, Int)] = Array((1,11), (2,21), (3,31), (4,41))
случай 2:
res0.map(case (x,y)=>(x,y+1)).collect;
Что дает ниже ошибку:
ошибка: неправильное начало простого выражения
Могу ли я узнать причину неудачи в случае 2, просто цветочная скобка - это разница между двумя случаями.
Заранее спасибо.
1 ответ
Дело требует {}. В общем случае { case arg => logic } - это то, что в Scala называется частичной функцией.
Вы также можете сделать это, кстати:
val y = RDD.map(a=> (a._1, a._2 + 1)).collect