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

标签 hadoop hive cloudera hiveql cloudera-cdh

我支持具有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,'$ .generation.ats'))作为raw_raw_events_duid WHERE app ='atlas_qa'AND ds> ='的first_boot_ts 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信息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),它:

  • 根据指定的jsont_rli从json字符串中提取json对象
  • 返回提取的json对象的json字符串。
  • 如果输入的json字符串无效,它将返回null。

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

    希望这可以帮助

    关于hadoop - 执行前配置单元查询执行估计的强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061570/

    相关文章:

    hadoop - 使用 cygwin 在 Windows 中安装 pig

    hadoop - Sqoop 创建包含多条记录的插入语句

    scala - `saveAsTable` 之后无法从 Hive 查询 Spark DF - Spark SQL 特定格式,与 Hive 不兼容

    hadoop - Hive 表导出优化

    java - 在 Oozie 中单独处理行

    networking - Cloudera 配置 - 多 NIC

    map - 在 hadoop 上组合两组输入

    hadoop - 在 avro 序列化数据上构建搜索层索引

    azure - 查询主机监视器时发生内部错误

    java - 加载 rJava 时出错