Java 파일에서 하이브 쿼리를 실행하려고합니다. 쇼 데이터베이스 쿼리에서 마지막 결과 만 얻고 싶습니다.결과의 마지막 값을 효율적으로 가져 오는 방법
모든 쿼리 결과를 반복하여 마지막 값을 찾는 대신 마지막 출력을 직접 가리키는 방법이 있습니까? 내가 그것을보고, 단지 스트림 프로세스가 (일부 Java 인터페이스 API가없는 않는, 그래서, 스트림의 아이디어가 순차 액세스입니다 https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html
를 참조 Process 클래스에서 지원하는
example : show databases ;
Db1
DB2
DB3
Output should be DB3
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ProcessBuilder hiveProcessBuilder = new ProcessBuilder("hive", "-e",
"show databases");
Process hiveProcess = hiveProcessBuilder.start();
OutputRedirector outRedirect = new OutputRedirector(
hiveProcess.getInputStream(), "HIVE_OUTPUT");
OutputRedirector outToConsole = new OutputRedirector(
hiveProcess.getErrorStream(), "HIVE_LOG");
outRedirect.start();
outToConsole.start();
}
public static class OutputRedirector extends Thread {
InputStream is;
String type;
public OutputRedirector(InputStream is, String type) {
this.is = is;
this.type = type;
}
@Override
public void run() {
try {
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
String result = line;
System.out.println(type + "> " + result);
}
} catch (IOException ioE) {
}
}
}
}
하이브 쿼리를 실행할 수있는 다른 방법이 있습니까? 하이브 연결을 사용하는 것 외에도 – Ninja
나는 잘 모르겠다. – GreenThor