zoukankan      html  css  js  c++  java
  • 关于Spark中的常见问题及解决方法(4) —— Join操作

    前言

    Join和Aggregation操作都可能引起Shuffle,所以这类问题一般具有相似的症状和解决办法。

    主要症状

    • Join stage可能一直在运行,它可能包含一个或者多个task。
    • 该Join stage前后的stage看起来一切正常。

    可能的解决方法

    • 许多Join可以被手动或自动)优化到其他类型的连接。

    • 尝试不同的连接顺序也许可以发现较快连接组合,特别是当其中一些连接过滤掉大量数据, 先做那些。

    • 对数据集进行分区对于减少群集中的数据移动非常有用,尤其是在多个连接操作中将使用相同的数据集时。 可以尝试join前的不同分区组合, 但这会引起shuffle。

    • Join操作缓慢也可能是由于数据偏差造成的。 可以调整Spark应用程序和/或增加executor的大小等。

    • 在Join操作之前使用SELECT等操作过滤选出需要处理的数据,避免处理无关的数据。 Spark的查询优化器将自动为结构化API执行此操作。

    • -确保数据中的空值被正确表示(使用Spark的null概念)而不是像”“或”EMPTY“那样的默认值。 Spark通常会尽可能优化,在作业早期跳过空值,但对于其他自定义的占位符值,并没有这样的优化机制

    • 有时,如果Spark不知道有关输入DataFrame或表的任何统计信息,则Spark无法正确规划广播(broadcast)连接。 如果你知道要join中的一个表很小,则可以尝试强制广播

    参考资料

    [BOOK] Spark - The Definitive Guide

  • 相关阅读:
    python主成分分析
    matplotlib绘图pie
    cpu监控:mpstat命令
    cpu监控:dstat
    MongoDB--安装部署
    Linux-网络管理
    Apache 虚拟主机配置
    Apache 访问控制
    Apache 域名跳转配置
    Apache 日志管理
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10625552.html
Copyright © 2011-2022 走看看