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

  • 相关阅读:
    使用阿里云docker加速器
    Linux之screen命令详解
    Linux下Git和GitHub使用方法总结
    CentOS 6&7安装ffmpeg
    用yum安装lamp和lnmp环境
    nginx错误日志error_log日志级别
    CentOS7 yum 安装mysql 5.6
    python实现对数据的写入和读取(excel)
    windows下配置sublime
    远程配置pycharm
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10625552.html
Copyright © 2011-2022 走看看