繁体   English   中英

执行之前配置单元查询执行估计的强度

[英]Intensity of hive query execution estimate before execution

我支持具有HIVE服务的Hadoop集群,但是我不是HIVE开发人员。 其中一名开发人员正在运行长查询(请参见下面的示例)。 作业失败,并显示一些错误消息(请参阅下文)。

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

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

Hive Metastore金丝雀的持续时间从<1秒降至2.5秒。

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

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

服务器上的示例错误:hadoop-cmf-hive-HIVEMETASTORE-qn7bi02hdn001.compatible.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 @ [])

运行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。

注意: json路径只能包含字符[0-9a-z_] ,即不能包含大写或特殊字符。 另外,键不能以数字开头。 这是由于对Hive列名的限制。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM