代码之家  ›  专栏  ›  技术社区  ›  Jiew Meng

雅典娜:按比例因子查询耗尽的资源

  •  1
  • Jiew Meng  · 技术社区  · 7 年前

    我运行的查询如下:

    SELECT f.*, p.countryName, p.airportName, a.name AS agentName
    FROM (
        SELECT 
            f.outboundlegid, 
            f.inboundlegid,
            f.querydatetime,
            cast(f.agent as bigint) as agent,
            cast(f.querydestinationplace as bigint) as querydestinationplace,
            f.queryoutbounddate,
            f.queryinbounddate,
            f.quoteageinminutes,
            f.price
        FROM flights f
        WHERE querydatetime >= '2018-01-02'
        AND querydatetime <= '2019-01-10'
    ) f
    INNER JOIN (
      SELECT airportId, airportName, countryName
      FROM airports
      WHERE countryName IN ('Philippines', 'Indonesia', 'Malaysia', 'Hong Kong', 'Thailand', 'Vietnam')
    ) p
    ON f.querydestinationplace = p.airportId
    INNER JOIN agents a
    ON f.agent = a.id
    ORDER BY f.outboundlegid, f.inboundlegid, f.agent, querydatetime DESC
    

    怎么了?或者我如何优化它?它给了我

    在此比例因子下查询耗尽的资源

    我有一个航班表,我想查询特定国家的航班

    1 回复  |  直到 7 年前
        1
  •  3
  •   Roberto    7 年前

    自从雅典娜诞生以来,我一直面临着这个问题,问题是 ORDER BY 条款。雅典娜只是一个EMR集群,安装了Hive和Prestodb。您所面临的问题是:即使您的查询分布在X个节点上,排序阶段也只能由一个节点完成,在本例中是主节点。因此,在最后,您可以订购与主节点内存相同的数据。

    您可以通过减少查询返回的数据量来测试它,这可能会缩短时间范围。希望这有帮助:)