This operation will execute a given Hadoop SQL Query.
Following code is used to execute a Hadoop SQL Query.
java.net.HttpURLConnection is used to create a POST request with "hadoopsql" appended to the URL.
Two samples are displayed here:
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpStatus;
public class QueryOperations {
/*
* This program fetches a given Hadoop SQL Query
* @param serverURL: URL of s3 server.
* @param token: authorization token.
* @param sqlQuery: Standard SQL query
*/
public void executeHadoopSQL(String serverURL, String token, String sqlQuery)
throws Exception {
URL url = null;
HttpURLConnection httpCon = null;
InputStream is = null;
try {
/* append "/" at end of serverURL */
if (!serverURL.endsWith("/")) {
serverURL = serverURL + "/";
}
url = new URL(serverURL + "hadoopsql"); //append "hadoopsql" to the serverURL and create a new URL object
//Returns a URLConnection object that represents a connection to the remote object referred to by the URL.
httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true); // to use the URL connection for output
httpCon.setRequestMethod("POST"); //POST request is used
httpCon.setRequestProperty("authorization", token); //provides authorization token for authentication
httpCon.setRequestProperty("sqlquery", sqlQuery); //provide SQL Query
httpCon.setRequestProperty("startindex", "5"); //set start index to read JSON of query
httpCon.setRequestProperty("maxresults", "7"); //set maximum number of Hadoop SQL Queries that wil be fetched
httpCon.setRequestProperty("timeoutms", "300"); //set timeout period to fetch a Hadoop SQL Query
httpCon.connect(); //Opens a communications link to the resource referenced by the URL
if (httpCon.getResponseCode() == HttpStatus.SC_OK) { //check for OK response
is = httpCon.getInputStream();
// Process response here
}
} finally {
try {
if (is != null)
is.close(); //close InputStream
} catch (IOException e) {
e.printStackTrace();
}
if (httpCon != null) {
httpCon.disconnect(); //close connection
}
}
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpStatus;
public class QueryOperations {
/*
* This program fetches a given Hadoop SQL Query
* @param serverURL: URL of s3 server.
* @param token: authorization token.
* @param queryId: Id of Hadoop SQL Query whose report will be generated.
*/
public static void getHadoopSQLReport(String serverURL, String token, String queryId)
throws Exception {
URL url = null;
HttpURLConnection httpCon = null;
InputStream is = null;
OutputStream os = null;
try {
/* append "/" at end of serverURL */
if (!serverURL.endsWith("/")) {
serverURL = serverURL + "/";
}
url = new URL(serverURL + "hadoopsql"); //append "hadoopsql" to the serverURL and create a new URL object
//Returns a URLConnection object that represents a connection to the remote object referred to by the URL.
httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true); // to use the URL connection for output
httpCon.setRequestMethod("POST"); //POST request is used
httpCon.setRequestProperty("authorization", token); //provides authorization token for authentication
httpCon.setRequestProperty("queryid", queryId); //Id of Hadoop SQL Query to execute.
httpCon.setRequestProperty("hadoopsql-report-format", "PDF"); //generate report in PDF format
httpCon.connect(); //Opens a communications link to the resource referenced by the URL
if (httpCon.getResponseCode() == HttpStatus.SC_OK) { //check for OK response
is = httpCon.getInputStream();
// Process response here
StringWriter writer = new StringWriter();
os = new FileOutputStream(new File("/Applications/QueryIO/result.pdf")); //Copy object to local system
IOUtils.copy(is, os);
System.out.println("\nReport saved.");
}
} finally {
try {
if (is != null)
is.close(); //close InputStream
if (os != null)
os.close();
} catch (IOException e) {
e.printStackTrace();
}
if (httpCon != null) {
httpCon.disconnect(); //close connection
}
}
}
}