java - 从 Tomcat 查询 Impala 抛出无效 URL 异常

标签 java jsp tomcat impala cloudera-cdh

我正在尝试连接到 Impala 并从我的 Web 应用程序运行查询。这是我的 jsp 代码:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.DriverManager" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>



<%

    Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");

    Connection con = DriverManager.getConnection("jdbc:hive2://localhost:21050/;auth=noSasl");
    Statement stmt = con.createStatement();

     String sql = "select * from logdata limit 10";       
     System.out.println("Running: " + sql);
     ResultSet res = stmt.executeQuery(sql);

    while (res.next()) {
      System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
    }

%>
    </body>
</html>

这是我在浏览器中遇到的错误:

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: Invalid URL: jdbc:hive2://localhost:21050/;auth=noSasl
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

javax.servlet.ServletException: java.sql.SQLException: Invalid URL: jdbc:hive2://localhost:21050/;auth=noSasl
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840)
    org.apache.jsp.web.index_jsp._jspService(index_jsp.java:114)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.sql.SQLException: Invalid URL: jdbc:hive2://localhost:21050/;auth=noSasl
    org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:86)
    org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:106)
    java.sql.DriverManager.getConnection(DriverManager.java:615)
    java.sql.DriverManager.getConnection(DriverManager.java:213)
    org.apache.jsp.web.index_jsp._jspService(index_jsp.java:91)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

我正在使用 CDH4 和 Tomcat7。我已经和它搏斗了半天了。我错过了什么?

最佳答案

问题解决了。而不是:

Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");

我应该使用:

Class.forName("org.apache.hive.jdbc.HiveDriver");

关于java - 从 Tomcat 查询 Impala 抛出无效 URL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22977081/

相关文章:

java - Apache Camel 部署

java - 棋盘未绘制正确数量的棋子

java - 我可以在内存不足异常时自动重启tomcat jvm吗

tomcat - 如何使用 ADFS 2.0 和 SAML/SSO 保护 Tomcat 的 Web 应用程序?

java - 如何以及何时检查哈希表中的键是否为空

java - Facebook SDK 4.0.0,Android 上的 ShareDialog 始终为 null

java - 无法获取过滤器 java 中包含 # 符号的整个 url

html - 如何在动态生成的 anchor 标记上生成事件

jsp - 如何用servlet派发的数据填充jsp中的html表单?

tomcat 在终端中启动但不在 ubuntu 上的浏览​​器中运行?