将scala中的对合并到数组
Posted
技术标签:
【中文标题】将scala中的对合并到数组【英文标题】:merge pairs in scala to an array 【发布时间】:2016-05-01 08:27:15 【问题描述】:输入:
dupName = (ERIC,KAREN)
(ERIC,JASON)
(ERIC,ANTHONY)
预期输出:
(ERIC,KAREN,JASONC,ANTHONY)
我使用dupName.reduce(_ + _._2)
,它总是得到一个错误:
[error]found : String
[error] required: (String, String)
【问题讨论】:
【参考方案1】:reduce 将A
的所有值聚合为A
的单个值。或者在您的情况下,将多个(String, String)
聚合成一个(String, String)
。或者在函数形式中,这是一个 reduce 函数:
(concatenatedPair : (String, String), currentPair : (String, String) => (String, String))
如果你想做你想做的事,你需要映射,像这样:
val arr = List(("ERIC", "JASON"), ("ERIC", "ANTHONY"), ("ERIC", "KAREN"))
val newArr = arr.flatMap(x => List(x._1, x._2)).distinct
// newArr is now List(ERIC, JASON, ANTHONY, KAREN)
这只是一个示例,因为可能有更有效的方法来执行此操作(例如:将字符串放入 Set
)
【讨论】:
非常感谢。我想我对 Array 和 List 感到困惑。 不过我对 RDD 并不是很熟悉。 这不是一个 RDD(Resilient D分布式 Dataset),RDD 来自 apache spark。这只是一个普通的旧平面地图。 好的。还是谢谢你。我会看到更多的文档来了解更多关于 rdd 的信息。以上是关于将scala中的对合并到数组的主要内容,如果未能解决你的问题,请参考以下文章
Spark Dataframe - 计算列之间的对(Scala)
1.合并两个数组,并保持仍然有序。2.删除合并后数组中的重复元素