执行前的hive查询执行估计强度

时间:2016-05-05 22:52:34

标签: hadoop hive cloudera hiveql cloudera-cdh

我支持使用HIVE服务的Hadoop集群,但我不是HIVE开发人员。其中一位开发人员正在运行一个长查询(请参阅下面的示例)。该作业失败并出现一些含糊不清的错误消息(请参见下文)。

我怀疑此查询太强烈或未优化或两者兼而有之。我怎么知道查询是否会过于激烈?

当我监控Hive服务器时,负载仅为(w输出)1.5,网络带宽达到5.7 Mbps /秒。顶级java进程消耗的CPU低于2%。我没有看到查询破坏了配置单元服务器(hive集群中只有1个配置单元服务器)的真实证据。

Hive Metastore canary持续时间从<1秒到2.5秒。

我怎么知道这个或任何其他查询太强烈了?

查询:     SELECT duid,GET_JSON_OBJECT(json_data,'$ .app.p')作为平台,MIN(GET_JSON_OBJECT(json_data,'$ .generated.ats'))as first_boot_ts FROM raw.raw_events_duid WHERE app ='atlas_qa'AND ds&gt; =' 20160306'和ds&lt; ='20160326'AND duid ='00001656-da4f-47dc-8619-2868198ed25a'GROUP BY DID,GET_JSON_OBJECT(json_data,'$ .app.p')限制10;

服务器上的示例错误:     hadoop-cmf-hive-HIVEMETASTORE-qn7bi02hdn001.compliant.disney.private.log.out:2016-05-04 12:21:58,115 INFO org.apache.hadoop.hive.metastore.ObjectStore:无法从中创建表达式树表达式字符串[(null和(ds ='20160501'))]解析分区过滤器时出错; lexer错误:null;异常NoViableAltException(11 @ [])

1 个答案:

答案 0 :(得分:0)

运行Get_json_object时可能会返回一些空数据。从查询中删除这两个并运行它..它将正常运行..从MIN(GET_JSON_OBJECT(json_data, '$.generated.ats'))返回一些空数据。

此外,我们有string get_json_object(string json_string, string path),其中:

  1. 根据指定的json路径从json字符串中提取json对象
  2. 返回提取的json对象的json字符串。
    • 如果输入的json字符串无效,它将返回null。
  3. 注意: json路径只能包含字符[0-9a-z_],即没有大写或特殊字符。此外,键不能以数字开头。这是由于Hive列名称的限制。

    希望这会有所帮助