JAVA连接HugeTable的代码如下
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Date;
public class JDBCEx
{
Statement statement;
public JDBCEx() throws Exception
{
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
Connection conn = DriverManager.getConnection("jdbc:hive://192.168.33.69:10000/default", "admin", "admin");
statement = conn.createStatement();
}
public void execute(String sql) throws Exception
{
if (null == sql || 0 == sql.length())
{
throw new IOException("bad command");
}
if (sql.endsWith(";"))
{
sql = sql.substring(0, sql.length() - 1);
}
Date start = new Date();
boolean query = statement.execute(sql);
Date stop = new Date();
long deltaTime = stop.getTime() - start.getTime();
System.out.println("execution time: " + (deltaTime / (60 * 1000)) + " min " + ((deltaTime / 1000) % 60)
+ " sec " + (deltaTime % 1000) + " ms " + " [total " + deltaTime + " ms]");
if (false == query)
System.out.println("update count = " + statement.getUpdateCount());
else
{
ResultSet result = statement.getResultSet();
ResultSetMetaData metadata = result.getMetaData();
for (int i = 1; i <= metadata.getColumnCount(); ++i)
{
// System.out.println("%30s", metadata.getColumnLabel(i));
}
System.out.println();
int n = 0;
while (result.next())
{
for (int i = 1; i <= metadata.getColumnCount(); ++i)
{
// System.out.printf("%30s", result.getString(i));
}
n++;
System.out.println();
}
System.out.println("rows: " + n + " execution time: " + (deltaTime / (60 * 1000)) + " min "
+ ((deltaTime / 1000) % 60) + " sec " + (deltaTime % 1000) + " ms " + " [total " + deltaTime
+ " ms]");
}
}
public static void main(String[] args) throws Exception
{
String sql = "select * from gdr limit 100;";
JDBCEx jc = new JDBCEx();
jc.execute(sql);
System.exit(0);
}
}