我有一个大型配置单元表(约 90 亿条记录和约 45GB 的兽人格式)。我正在使用 spark sql 对表进行一些分析。但是对此进行任何操作需要太多时间。只需对输入数据框本身进行计数就需要大约 11 分钟才能完成。仅任何一列的 min、max 和 avg 都需要超过一个半小时才能完成。
我正在研究一个资源有限的集群(因为它是唯一可用的集群),共有 9 个执行程序,每个执行程序有 2 个核心,每个执行程序有 5GB 内存,分布在 3 个物理节点上。
有什么方法可以优化这一点,比如将同一集群上每列上所有聚合函数的时间缩短到至少 30 分钟以内,或者增加我的资源是唯一的方法?我个人不太热衷于这样做。我遇到的一种加快数据帧操作的解决方案是缓存它们。但在我的情况下,我认为这不是一个可行的选择。
我遇到的所有现实世界场景都使用巨大的集群来处理这种负载。
任何帮助表示赞赏。我在独立模式下使用 spark 1.6.0 和 kryo 序列化程序。