...
import java.sql.DriverManager
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.sql.DriverManagerSQLException
import org.apache.hadoop.gateway.shell.CredentialsgatewayHost = "localhost";
gatewayPort = 8443;
trustStore = System.getProperty('user.home') + "/gateway-client-trust.jks";
trustStorePassword = "changeit";
contextPath = "gateway/sandbox/hive";
sql = ""if (args.length == 0) {
// accept defaults
System.out.println(String.format("\nDefault connection args: %s, %d, %s, %s, %s", gatewayHost, gatewayPort, trustStore, trustStorePassword, contextPath))
} else if (args[0] == "?" || args[0] == "help") {
System.out.println("\nExpected arguments: {host, port, truststore, truststore-pass, context-path}\n")
System.exit(0);
} else if (args.length == 5) {
gatewayHost = args[0];
gatewayPort = args[1].toInteger();
trustStore = args[2];
trustStorePassword = args[3];
contextPath = args[4];
System.out.println(String.format("\nProvided connection args: %s, %d, %s, %s, %s", gatewayHost, gatewayPort, trustStore, trustStorePassword, contextPath))
} else if (args.length > 0) {
System.out.println("\nERROR: Expected arguments: NONE for defaults or {host, port, truststore, truststore-pass, context-path}\n")
System.exit(1);
}connectionString = String.format( "jdbc:hive2://%s:%d/;ssl=true;sslTrustStore=%s;trustStorePassword=%s?hive.server2.transport.mode=http;hive.server2.thrift.http.path=/%s", gatewayHost, gatewayPort, trustStore, trustStorePassword, contextPath );
System.out.println("<======KnoxLine======>");
System.out.println("powered by Apache Knox");
System.out.println("");credentials = new Credentials()
credentials.add("ClearInput", "Enter username: ", "user")
.add("HiddenInput", "Enter pas" + "sword: ", "pass")
credentials.collect()user = credentials.get("user").string()
pass = credentials.get("pass").string()// Load Hive JDBC Driver
Class.forName( "org.apache.hive.jdbc.HiveDriver" );// Configure JDBC connection
connection = DriverManager.getConnection( connectionString, user, pass );while(1) {
def sql = System.console().readLine 'knoxline> '
if (!sql.equals("")) {
System.out.println(sql)
rs = true;
statement = connection.createStatement();
try {
if (statement.execute( sql )) {
resultSet = statement.getResultSet()
int colcount = 0
colcount = resultSet.getMetaData().getColumnCount();
row = 0
header = "| "
while ( resultSet.next() ) {
line = "| "
for (int i = 1; i <= colcount; i++) {
colvalue = resultSet.getString( i )
if (colvalue == null) colvalue = ""
colsize = colvalue.length()
headerSize = resultSet.getMetaData().getColumnLabel( i ).length()
if (headerSize > colsize) colsize = headerSize
if (row == 0) {
header += resultSet.getMetaData().getColumnLabel( i ).center(colsize) + " | ";
}
line += colvalue.center(colsize) + " | ";
}
if (row == 0) {System.out.println("".padLeft(header.length()-1, "="))
System.out.println(header);
System.out.println("".padLeft(header.length()-1, "="))
}
System.out.println(line);
row++
}
System.out.println("\nRows: " + row + "\n");
resultSet.close();
}
}
}catch(SQLException e) {
//e.printStackTrace()
System.out.println("SQL Exception encountered... " + e.getMessage())if (e.getMessage().contains("org.apache.thrift.transport.TTransportException")) catch(Exception e) {
e.printStackTrace( System.out.println("reconnecting... ")
connection connection = DriverManager.getConnection( connectionString, user, pass );
}
}
statement.close();
}
}
connectionconnection.close();
Execute a SQL Commands using KnoxLine
...