私はこのメソッドを使いましたが、ハイブの完了したジョブ(例:eventListener!)を外挿する方法を見つけることができません。助けてください!編集 - 私はあなたがクライアントから(私がマッピングされたので、私は50%完成しました)得ることができると思っていました(私がコマンドを上書きするコマンドを提出したならば)。 Briskを持つOpsCenter(Datastaxによる)はこれを非常に行います。Hive - JobTracking?
import java.util.List;
import org.apache.hadoop.hive.metastore.api.MetaException;
import org.apache.hadoop.hive.service.HiveServerException;
import org.apache.hadoop.hive.service.ThriftHive;
import org.apache.hadoop.hive.service.ThriftHive.Client;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;
public class Hive {
static Client client;
static TSocket transport;
public static void main(String args[]) throws HiveServerException,
TException, MetaException {
transport = new TSocket("hiveserver",
10000);
transport.setTimeout(999999999);
TBinaryProtocol protocol = new TBinaryProtocol(transport);
client = new ThriftHive.Client(protocol);
transport.open();
System.out.println("Starting map job...");
Thread mapReduceThread = new Thread(new HiveQuery(
"SELECT COUNT(*) FROM myHiveTable"));
mapReduceThread.start();
System.out.println("Waiting on map...");
}
private static class HiveQuery implements Runnable {
private String hql;
public HiveQuery(String hql) {
this.setHql(hql);
}
public void run() {
long start = System.currentTimeMillis();
// Blocking
try {
client.execute(this.getHql());
} catch (HiveServerException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
List<String> responseList = null;
try {
responseList = client.fetchAll();
} catch (HiveServerException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
long elapsedTimeMillis = System.currentTimeMillis() - start;
float elapsedTime = elapsedTimeMillis/1000F;
System.out.println("Job took: " + elapsedTime + " seconds");
for (String response : responseList) {
System.out.println("Response: " + response);
}
transport.close();
System.out.println("Closed transport");
System.exit(0);
}
public void setHql(String hql) {
this.hql = hql;
}
public String getHql() {
return hql;
}
}
}
クエリ自体がブロックされているため、ジョブに関する詳細情報を取得する方法があるかどうかはわかりません。あなたはハイブからより多くの情報を得ることができましたか?私はjobIdとおそらく%stuffを探しています。 – xinit