【发布时间】:2015-01-14 17:06:42
【问题描述】:
Spark Scala 将 Iterable (CompactBuffer) 转换为单个对时遇到问题。 我想用 CompactBuffer 中的键值对创建一个新的 RDD。
看起来像这样:
CompactBuffer(Person2, Person5)
CompactBuffer(Person2, Person5, Person7)
CompactBuffer(Person1, Person5, Person11)
CompactBuffers 可以获取更多的人,而不仅仅是 3 个。 基本上我想要的是一个新的 RDD,它具有像这样的 CompactBuffer 的单独组合(我也想避免相同的键值):
Array[
<Person2, Person5>
<Person5, Person2>
<Person2, Person7>
<Person7, Person2>
<Person5, Person7>
<Person7, Person5>
<Person1, Person5>
<Person5, Person1>
<Person1, Person11>
<Person11, Person1>
<Person5, Person11>
<Person11, Person5>]
有人可以帮我吗?
提前谢谢你
【问题讨论】:
-
所以您想要每个 CompactBuffer 中的所有项目对,但又不想重复来自早期 CompactBuffer 的任何对?
-
这正是我想要的
-
这不会很好地并行化,因为任何一个 CompactBuffer 的输出都取决于所有以前的历史记录。所以它必须在一个节点上运行?您预计会有多少对不同的配对?
-
会很多。也许只是跳过不重复的部分。我可以尝试稍后处理。
-
其实我错了。如果您计算所有对,那么 RDD 有一个
distinct方法,我将假设它是分布式的。看我的回答
标签: scala apache-spark key-value iterable