将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中的对合并到数组的主要内容,如果未能解决你的问题,请参考以下文章

c#将多个数组复制/合并到一个数组中的更好方法

Spark Dataframe - 计算列之间的对(Scala)

如何使用jq将两个文件中的数组合并到一个数组中?

1.合并两个数组,并保持仍然有序。2.删除合并后数组中的重复元素

如何在scala中的另一个数组中使用一个数组,以便使用一个数组中的每个元素附加到另一个数组中的相应元素?

Scala:将元素附加到数组的最佳方法是啥?