因此,我们有一群人访问我们的集群,并希望监视通过hive/odbc运行的每个sql语句。job history server网页将为我提供部分sql,但不是全部。有没有办法检索正在运行的命令的完整sql?可以通过web gui或命令行。我想监视低效的查询,并向开发人员发出警告。cluster是在yarn模式下运行mapr5.0的10节点mapr集群
qgelzfjb1#
我找到了解决办法。ssh到运行hiveserver2的机器中,并执行下面的命令。替换为您感兴趣的用户(或者*如果您想全部替换),并将hive-0.13替换为您正在使用的hive版本。 cat /opt/mapr/hive/hive-0.13/logs/<user>/hive.log | grep "Starting command" 编辑:在我写这篇文章的那一年里,它似乎变成了: cat /opt/mapr/hive/hive-2.1/logs/<user>/hive.log | grep "Executing command" 编辑take 2。上面的代码不处理多行sql,只显示第一行。对于许多查询,它只是显示“select”而已。下面的例子解决了这个问题。我有一个很好的sed解决方案,但它不适用于 tail -f 出于某种原因,perl就是这样。perl不常见,但它实际上比sed解决方案更具可读性。 cat /opt/mapr/hive/hive-2.3/logs/<user>/hive.log | perl -ne 's/\r\n/ /g; print;' | grep "Executing command"
cat /opt/mapr/hive/hive-0.13/logs/<user>/hive.log | grep "Starting command"
cat /opt/mapr/hive/hive-2.1/logs/<user>/hive.log | grep "Executing command"
tail -f
cat /opt/mapr/hive/hive-2.3/logs/<user>/hive.log | perl -ne 's/\r\n/ /g; print;' | grep "Executing command"
1条答案
按热度按时间qgelzfjb1#
我找到了解决办法。ssh到运行hiveserver2的机器中,并执行下面的命令。替换为您感兴趣的用户(或者*如果您想全部替换),并将hive-0.13替换为您正在使用的hive版本。
cat /opt/mapr/hive/hive-0.13/logs/<user>/hive.log | grep "Starting command"
编辑:在我写这篇文章的那一年里,它似乎变成了:cat /opt/mapr/hive/hive-2.1/logs/<user>/hive.log | grep "Executing command"
编辑take 2。上面的代码不处理多行sql,只显示第一行。对于许多查询,它只是显示“select”而已。下面的例子解决了这个问题。我有一个很好的sed解决方案,但它不适用于tail -f
出于某种原因,perl就是这样。perl不常见,但它实际上比sed解决方案更具可读性。cat /opt/mapr/hive/hive-2.3/logs/<user>/hive.log | perl -ne 's/\r\n/ /g; print;' | grep "Executing command"