2016-01-19 5 views
0

Попытка уменьшитьByKey в многомерном списке с помощью scala, так что кортежи добавляются в родительский кортеж и, таким образом, генерируют многомерный кортеж.ReduceByKey на многомерном кортеже с использованием scala и искры

В питоне я пытаюсь добавить к многомерным списка ниже, и она прекрасно работает:

.map(lambda z:(z[1][0][1],[[z[1][0][1],str(z[1][0][2]),str(z[1][0][3]),z[1][0][0].strftime('%Y-%m-%dT%H:%M:%SZ'),z[1][1]]])).reduceByKey(lambda a,b:a+b) 

Но в Скале я не могу использовать reduceByKey, я пытаюсь следующее:

.map(t => (t._2._1._2,((t._2._1._2,t._2._1._3,t._2._1._4,t._2._1._1,t._2._2)))).reduceByKey(t,y => t++y) 

Любые намеки в правильном направлении также приветствуются!

+1

Вы можете добавить пример? –

ответ

2

Scala Tuple*, в отличие от Python tuple, не является коллекцией. Это Product. Технически он представляет собой n-кратное декартово произведение возможных гетерогенных наборов значений. Scala Suples не могут быть объединены и не могут содержать более 22 элементов.

Если вы хотите получить значения за ключ, вам следует либо использовать какой-либо тип коллекции, либо даже лучше groupByKey.

How should I think about Scala's Product classes?