我读到了部分手动广播散列连接,可以在Spark中连接Pair RDD时使用。如果一个密钥太大而无法放在单个分区上,则建议使用此选项。在这种情况下,您可以在大型RDD上使用countByKeyApprox来大致了解哪些密钥最有利于广播。 然后,您只为这些键过滤较小的RDD,在HashMap中本地收集结果。使用sc.broadcast,您可以广播HashMap,以便每个worker只有一个副本并手动执行HashMap的连接。使用相同的HashMap,您可以过滤掉大型RDD,不包含大量重复键并执行标准连接,并将其与手动连接的结果结合使用。这种方法非常复杂,但可能允许您处理无法处理的高度偏斜的数据。
问题是关于countByKeyApprox的使用(长超时)。这个超时的单位是多少?如果我写countByKeyApprox(10),这是否意味着它将等待10秒或10毫秒或其他什么?
答案 0 :(得分:0)
参数:
- timeout - 等待作业的最长时间,以毫秒为单位
- 信心 - 结果中所需的统计信心