我最近一直在阅读 hive 源代码,但我对此感到困惑interrupt()
。我想知道它是如何中断当前 hive 命令的。这个函数的位置在CliDriver.processLine()
.
问问题
47 次
1 回答
0
在 HiveInterruptUtils http://people.apache.org/~hashutosh/hive-clover/common/org/apache/hadoop/hive/common/HiveInterruptUtils.html的实现中,找到这个:
public static void interrupt() {
synchronized (interruptCallbacks) {
for (HiveInterruptCallback resource :
new ArrayList<HiveInterruptCallback>(interruptCallbacks)) {
resource.interrupt();
}
}
}
这可能会中断之前添加到 HiveInterruptCallback 列表中的所有资源。
还有 HiveInterruptCallback,http ://people.apache.org/~hashutosh/hive-clover/common/org/apache/hadoop/hive/common/HiveInterruptCallback.html#HiveInterruptCallback 是一个接口。
public interface HiveInterruptCallback {
/**
* Request interrupting of the processing
*/
void interrupt();
}
之前注册的资源实现了HiveInterruptCallback的interrupt()方法,所以HiveInterruptUtils.interrupt()的行为取决于具体的资源实现。
于 2013-08-04T11:43:19.533 回答