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 } } } }