Spark:将正常大小的 Dataframe 与非常大的 Dataframe 连接的最佳方式

发布于 2025-01-11 04:40:34 字数 204 浏览 0 评论 0原文

我的 DF1 有大约 50k 条记录。 DF2 拥有来自 s3 parq 的超过 50 亿条记录。我需要在两个 DF 中对 md5 哈希进行左外连接,但正如预期的那样,它既慢又昂贵。

我尝试过广播加入,但 DF1 也很大。

我想知道处理这个问题的最佳方法是什么。我应该先过滤 DF2 上的 50k 记录 (md5),然后与 Df1 进行连接吗?

谢谢。

I have DF1 with ~50k records. DF2 has >5Billion records from s3 parq. I need to do a left outer join on md5 hash in both DFs but as expected it's slow and expensive.

I tried broadcast join but DF1 is quite big as well.

I was wondering what would be the best way to handle this. Should I filter DF2 on those 50k records (md5s) first and then do the join with Df1.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天邊彩虹 2025-01-18 04:40:35

您可以尝试以下选项:

  1. 删除重复的行并过滤掉任何和所有不重复的列
    与调用外连接之前的下游处理相关

  2. 在调用连接操作之前将 DF1 保留到磁盘

  3. 确定 DF2 在用于联接的列上是否存在数据倾斜,
    然后尝试根据偏斜值将它们分开并处理连接
    分别

  4. 您还可以尝试调整执行参数来调整作业

You could try out the following options:

  1. Remove duplicate rows andFilter out any and all columns that are not
    relevant for downstream processing before calling on the outer join

  2. Persist DF1 to disk before calling the join operation

  3. Figure out if DF2 has data skew on the columns used for joining,
    then try to split them out based on skew values and process the join
    separately

  4. You could also try tweaking the execution parameters to tune the job

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文