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

Intensity of hive query execution estimate before execution

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

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

当我监控 Hive 服务器负载时,负载仅为(w 输出)1.5,网络带宽峰值为 5.7 Mbps/sec。 CPU 前 java 个进程消耗的资源低于 2%。我没有看到真正的证据表明查询正在破坏配置单元服务器(配置单元集群中只有 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>='20160306' and ds<='20160326' AND duid ='00001656-da4f-47dc -8619-2868198ed25a' GROUP BY duid,GET_JSON_OBJECT(json_data, '$.app.p') limit 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 and (ds = ' 20160501'))]解析分区过滤器时出错;词法分析器错误:空;异常 NoViableAltException(11@[])

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

编辑了一些空数据 return

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

  1. 根据指定的 json 路径从 json 字符串中提取 json 对象
  2. Returns json 提取的 json 对象的字符串。
    • 如果输入的 json 字符串无效,它将 return 为 null。

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

希望这对您有所帮助