我支持使用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 @ [])
答案 0 :(得分:0)
运行Get_json_object
时可能会返回一些空数据。从查询中删除这两个并运行它..它将正常运行..从MIN(GET_JSON_OBJECT(json_data, '$.generated.ats'))
返回一些空数据。
此外,我们有string get_json_object(string json_string, string path)
,其中:
注意: json路径只能包含字符[0-9a-z_]
,即没有大写或特殊字符。此外,键不能以数字开头。这是由于Hive列名称的限制。
希望这会有所帮助