使用group by子句调整昂贵的spark查询

时间:2016-06-28 18:15:24

标签: apache-spark apache-spark-sql spark-dataframe

我正在尝试在spark sql中运行以下查询,并且需要花费数小时才能执行,然后因内存不足而失败

有没有办法调优查询或以更好的方式重写?

我的业务逻辑需要总和和计数所以我需要在查询中执行一个组。有没有更好的方法来实现这个目标?

table1有160多亿条记录

table2拥有超过100万条记录

table1是按日期分区1

    select b.a1,
          ,date1
         ,count(distinct(a.e)) 
        ,sum(b1)
    FROM
    (SELECT
            a,
            ,b
            ,e
            ,date1
            ,sum(c*d) as b1    
    from  table1
    where a='xyz'
           and b=11111
           and d IN (15 parameters here in in clause)
           and date1 >= '2014-01-01'
           GROUP BY a
           ,b
           ,e
           ) a  
    INNER JOIN
          table2 b
    ON a.a=b.a
    group by b.a1,
    date1

0 个答案:

没有答案