package com.inspur.udf;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
public class start_prior {
public static String evaluate(String table, String column, String column_sj, String para) throws ClassNotFoundException {
boolean check_re = true;
StringBuilder sb = new StringBuilder();
StringBuilder sb_tmp = new StringBuilder();
sb.append(para);
String driverName="org.apache.hive.jdbc.HiveDriver";
String url = "jdbc:hive2://10.111.30.41:10000/default;principal=hive/[email protected]";
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
try {
System.setProperty("java.security.krb5.conf", "D:\\workspace\\UDF-MD5\\src\\main\\kerberos\\krb5.conf");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("hive/[email protected]", "D:\\workspace\\UDF-MD5\\src\\main\\kerberos\\hive.service.keytab");
} catch (IOException e) {
e.printStackTrace();
}
try {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = null;
ResultSet resultSet = null;
do{
String sql = "select " + column + " from " + table + " where " + column_sj + " in (" + para + ")";
System.out.println(sql);
stmt = conn.prepareStatement(sql);
resultSet = stmt.executeQuery();
if (resultSet.next()){
do{
sb_tmp.append(resultSet.getString(1) + ",");
sb.append("," + resultSet.getString(1));
}while(resultSet.next());
para=sb_tmp.deleteCharAt(sb_tmp.length()-1).toString();
sb_tmp.delete(0,sb_tmp.length());
}else {
check_re=false;
}
}while (check_re);
resultSet.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/19840.html
標籤:數據倉庫
上一篇:要想查詢資料庫中所有的表里的記錄,并去重復。不知道哪里錯了?
下一篇:關于sql批量修改
