mysql - Unable to get the hive remote metastore table information over thrift -
i can metastore table information on local mysql metastore setup hive using below program.
import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.statement; import org.apache.hadoop.fs.path; import org.apache.hadoop.hive.conf.hiveconf; import org.apache.hadoop.hive.conf.hiveconf.confvars; public class metastoretest { public static void main(string[] args) throws exception { connection conn = null; try { hiveconf conf = new hiveconf(); conf.addresource(new path("/home/hadoop/hive-0.12.0/conf/hive-site.xml")); class.forname(conf.getvar(confvars.metastore_connection_driver)); conn = drivermanager.getconnection( conf.getvar(confvars.metastoreconnecturlkey), conf.getvar(confvars.metastore_connection_user_name), conf.getvar(confvars.metastorepwd)); statement st = conn.createstatement(); resultset rs = st.executequery( "select t.tbl_name, s.location tbls t " + "join sds s on t.sd_id = s.sd_id"); while (rs.next()) { system.out.println(rs.getstring(1) + " : " + rs.getstring(2)); } } { if (conn != null) { conn.close(); } } } }
currently trying above program metastore tables remote metastore using thrift.in current hive-site.xml have these params,
hive.metastore.uris = thrift://host1:9083, thrift://host2:9083 hive.metastore.local = false
there no params :
javax.jdo.option.connectiondrivername, javax.jdo.option.connectionusername, javax.jdo.option.connectionpassword
so, how can fetch metatable information on thrift protocol. running above code on host2. please suggest.
also when run above code, shows information on :
metastore_connection_driver derby connection embedded driver, metastoreconnecturlkey jdbc:mysql://<host name>/<database name>?createdatabaseifnotexist=true, metastore_connection_user_name "app" , metastorepwd "mine"
replace section of code :
conf.addresource(new path("/home/hadoop/hive-0.12.0/conf/hive-site.xml")); class.forname(conf.getvar(confvars.metastore_connection_driver)); conn = drivermanager.getconnection( conf.getvar(confvars.metastoreconnecturlkey), conf.getvar(confvars.metastore_connection_user_name), conf.getvar(confvars.metastorepwd));
with below :
class.forname("com.mysql.jdbc.driver"); conn = drivermanager.getconnection("jdbc:mysql://host2:3306/metastore", "urusername", "urpassword");
[note :change metastore dbname, user , password accordingly per setup.]
now :
statement st = conn.createstatement(); resultset rs = st.executequery("show tables"); while (rs.next()) { system.out.println("tables:" +rs.getstring(1)); }
see getting metastore table names or not.
Comments
Post a Comment