根据Databricks的最佳实践,应避免使用Spark的
似乎可以使用
groupByKey
。Spark的groupByKey
处理方式是先将信息在工作节点之间进行洗牌,然后再进行处理。解释
所以,我的问题是,有哪些替代方法可以以分布式和快速的方式返回以下内容?// want this
{"key1": "1", "key1": "2", "key1": "3", "key2": "55", "key2": "66"}
// to become this
{"key1": ["1","2","3"], "key2": ["55","66"]}
似乎可以使用
aggregateByKey
或glom
在分区中先执行(map
),然后将所有列表连接在一起(reduce
)来完成此操作。
groupByKey
是这里最有效的选择(无论是时间还是存储)。如果它OOMs,你只需要一个更大的集群。 - shuaiyuancn