java hivepreparedstatement示例

yws3nbqq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(421)

有人能展示一个hivepreparedstatement的示例java程序,它可以用来连接到hive表并从中检索数据。
https://hive.apache.org/javadocs/r1.2.2/api/org/apache/hive/jdbc/hivepreparedstatement.html
我试着用下面的代码,我无法完成它,因为有许多参数的构造函数

TCLIService.Iface client =null;
      EmbeddedThriftBinaryCLIService embeddedClient = new EmbeddedThriftBinaryCLIService();
      embeddedClient.init(null);
      client = embeddedClient;

      TOpenSessionReq openReq = new TOpenSessionReq();

      JdbcConnectionParams connParams = Utils.parseURL("jdbc:hive2://168.61.32.157:10000/nadb");

      Map<String, String> openConf = new HashMap<String, String>();
      // for remote JDBC client, try to set the conf var using 'set foo=bar'
       for (Map.Entry<String, String> hiveConf : connParams.getHiveConfs().entrySet()) {
        openConf.put("set:hiveconf:" + hiveConf.getKey(), hiveConf.getValue());
      }
      // For remote JDBC client, try to set the hive var using 'set hivevar:key=value'
      for (Map.Entry<String, String=> hiveVar : connParams.getHiveVars().entrySet()) {
        openConf.put("set:hivevar:" + hiveVar.getKey(), hiveVar.getValue());
      }
      // switch the database
      openConf.put("use:database", connParams.getDbName());
      // set the fetchSize
      openConf.put("set:hiveconf:hive.server2.thrift.resultset.default.fetch.size",
        Integer.toString(fetchSize));

      // set the session configuration
      Map<String, String> sessVars = connParams.getSessionVars();
      if (sessVars.containsKey(HiveAuthFactory.HS2_PROXY_USER)) {
        openConf.put(HiveAuthFactory.HS2_PROXY_USER,
            sessVars.get(HiveAuthFactory.HS2_PROXY_USER));
      }
      openReq.setConfiguration(openConf);

      // Store the user name in the open request in case no non-sasl authentication
      if (JdbcConnectionParams.AUTH_SIMPLE.equals(sessConfMap.get(JdbcConnectionParams.AUTH_TYPE))) {
        openReq.setUsername(sessConfMap.get(JdbcConnectionParams.AUTH_USER));
        openReq.setPassword(sessConfMap.get(JdbcConnectionParams.AUTH_PASSWD));
      }

      TOpenSessionResp openResp = client.OpenSession(openReq);

      // validate connection
      Utils.verifySuccess(openResp.getStatus());
      if (!supportedProtocols.contains(openResp.getServerProtocolVersion())) {
        throw new TException("Unsupported Hive2 protocol");
      }
      protocol = openResp.getServerProtocolVersion();
      sessHandle = openResp.getSessionHandle();

      HivePreparedStatement hivePreparedStatement = new HivePreparedStatement(con, client, sessHandle, sql);

有什么简单的方法可以做到这一点吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题