gpt4 book ai didi

scalding - (Scalding) groupBy foldLeft 在折叠中使用 group by 值

转载 作者:行者123 更新时间:2023-12-04 19:02:57 26 4
gpt4 key购买 nike

有如下数据:

pid  recom-pid
1 1
1 2
1 3
2 1
2 2
2 4
2 5

需要做到:
pid, recommendations
1 2,3
2 1,4,5

意思是忽略第二列中的 self ,并将其余部分放入逗号分隔的字符串中。它的制表符分隔数据

尝试了变体,但不确定如何在 foldLeft 中引用 productId
.groupBy('productId) {     
_.foldLeft(('prodReco) -> 'prodsR)("") {
(s: String, s2: String) =>
{
println(" s " + s + ", s2 :" + s2 + "; pid :" + productId + ".")
if (productId.equals(s2)) {
s
} else {
s + "," + s2;
}
}
}
}

使用 scala 2.10 与 scalding 0.10.0 和 cascading 2.5.3。需要一个烫手的答案。我知道如何在 Scala 中操作数据。我只是想知道如何在分组期间通过烫伤获得列并使用它们有条件地向左折叠或其他方式来获得过滤的输出。

有关完整的工作示例,请参阅 https://github.com/tgkprog/scaldingEx2/tree/master/Q1

最佳答案

而不是 groupBy然后 foldLeft , 只需使用 foldLeft .
这是一个使用 Scala 集合的解决方案,但它应该可以使用 scalading as well :

val source = List((1,1), (1,2), (1,3), (2,1), (2,2), (2,4), (2,5))                                                                                
source.foldLeft(Map[Int, List[Int]]())((m,e) =>
if (e._1 == e._2) m else m + (e._1 -> (e._2 :: m.getOrElse(e._1, List()))))

关于scalding - (Scalding) groupBy foldLeft 在折叠中使用 group by 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32939268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com