我支持带有配置单元服务的hadoop集群,但是我不是配置单元开发人员。其中一个开发人员正在运行一个长查询(请参见下面的示例)。作业失败,并显示一些隐秘的错误消息(请参见下文)。
我怀疑这个查询太过密集或者没有优化,或者两者兼而有之。我怎么知道这个问题会不会太激烈?
当我监视配置单元服务器时,负载仅为(w输出)1.5,网络带宽峰值为5.7 mbps/sec。顶级java进程消耗的cpu低于2%。我没有看到真正的证据表明查询正在破坏配置单元服务器(配置单元群集中只有一个配置单元服务器)。
Hive元库金丝雀持续时间从<1秒变为2.5秒。
我怎么知道是这个问题还是其他问题太激烈了?
查询:选择duid,getjson对象(json数据,$.app.p')作为平台,min(getjson对象(json数据,$.generated.ats'))作为第一个从raw.raw事件启动的对象,其中app='atlas qa'和ds>='20160306'和ds<='20160326'和duid='00001656-da4f-47dc-8619-2868198ed25a'按duid分组,getjson对象(json数据,$.app.p')限制10;
服务器上的错误示例:hadoop-cmf-hive-hivemetastore-qn7bi02hdn001.compliant.disney.private.log。out:2016-05-04 12:21:58115 info org.apache.hadoop.hive.metastore.objectstore:无法从表达式字符串[(null和(ds='20160501'))]生成表达式树分析分区筛选器时出错;lexer错误:null;异常noviablealtexception(11@[])
1条答案
按热度按时间gcuhipw91#
返回时可能有一些空数据
Get_json_object
正在运行。从查询中删除这两个并运行它。。一切都会好的。。从中返回了一些空数据MIN(GET_JSON_OBJECT(json_data, '$.generated.ats'))
.此外,我们还有
string get_json_object(string json_string, string path)
,其中:根据指定的json路径从json字符串中提取json对象
返回提取的json对象的json字符串。
如果输入的json字符串无效,它将返回null。
注意:json路径只能包含以下字符
[0-9a-z_]
,即没有大写或特殊字符。而且,按键不能以数字开头。这是由于对配置单元列名的限制。希望这有帮助