2301_78773234 2024-04-28 16:48 采纳率: 44.7%
浏览 17
已结题

运行jar包一直卡住

运行jar包一直卡住,运行jar包一直卡住运行jar包一直卡住
代码如下:

package HiveAPI;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HiveJdbcDemo {

     private static String DRIVER = "org.apache.hive.jdbc.HiveDriver";
        private static String URL = "jdbc:hive2://192.168.80.140:10000/test";
        private static String USERNAME = "";
        private static String PASSWORD = "";
        private static Connection connection;
        private static Statement statement;

        static {
            try {
                // 加载hive jdbc驱动
                Class.forName(DRIVER);
                // 获取连接
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                // 获取statement
                statement = connection.createStatement();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static void main(String[] args) throws SQLException {
            select();
        }


        public static void select() throws SQLException {
            String sql = "select * from t_users";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                System.out.println(resultSet.getLong("id"));;
                System.out.println(resultSet.getString("name"));;
            }
        }
}

img

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-04-28 16:57
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    图片内容

    图片显示了一段日志信息,记录了在尝试运行一个名为HiveJdbc.jar的JAR包时发生的一系列事件。日志信息包括:

    1. org.apache.hive.jdbc.Utils parseuRL类解析了Hive服务器的地址和端口。
    2. SLF4J日志框架未能加载org.slf4j.impl.StaticLoggerBinder类,因此默认使用了一个无操作的日志实现。
    3. org.apache.hive.jdbc.HiveConnection openTransport尝试使用JDBC URI打开到Hive服务器的连接。

    问题概括

    问题是在运行HiveJdbc.jar时程序一直卡住,无法继续执行。

    问题出现原因

    1. SLF4J日志问题:虽然SLF4J未能加载所需的日志实现类,但这通常不会阻止程序执行,只是日志信息会受到影响。
    2. Hive JDBC连接问题:程序可能在尝试建立与Hive服务器的连接时卡住。这可能是由于网络问题、Hive服务未运行、或者JDBC URL配置错误。

    问题解决方案

    1. 检查Hive服务状态:确保Hive服务正在运行,并且监听指定的端口(10000)。
    2. 检查网络连接:确保客户端能够访问Hive服务器的IP地址和端口。
    3. 检查JDBC URL:确认JDBC URL是否正确,包括服务器地址、端口和数据库名称。
    4. 增加超时设置:在JDBC连接字符串中增加超时参数,例如jdbc:hive2://192.168.80.140:10000/test?timeout=5000,以避免无限期等待。

    提供代码

    由于问题可能与网络或服务状态有关,代码本身可能不需要修改。但是,可以增加一些日志输出来帮助诊断问题:

    package HiveAPI;
    
    import java.sql.*;
    import java.util.Properties;
    
    public class HiveJdbcDemo {
    
        private static String DRIVER = "org.apache.hive.jdbc.HiveDriver";
        private static String URL = "jdbc:hive2://192.168.80.140:10000/test?timeout=5000";
        private static String USERNAME = "";
        private static String PASSWORD = "";
        private static Connection connection;
        private static Statement statement;
    
        static {
            try {
                // 加载hive jdbc驱动
                Class.forName(DRIVER);
                System.out.println("Hive JDBC Driver loaded.");
                // 获取连接
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                System.out.println("Connection established.");
                // 获取statement
                statement = connection.createStatement();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            try {
                select();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        public static void select() throws SQLException {
            String sql = "select * from t_users";
            ResultSet resultSet = statement.executeQuery(sql);
            System.out.println("Query executed. Fetching results...");
            while (resultSet.next()) {
                System.out.println(resultSet.getLong("id"));
                System.out.println(resultSet.getString("name"));
            }
        }
    }
    

    代码运行方式

    1. 确保Hadoop和Hive服务正在运行。
    2. 将上述代码保存为HiveJdbcDemo.java
    3. 使用Java编译器编译代码:javac HiveJdbcDemo.java
    4. 运行编译后的类:java HiveJdbcDemo

    代码预期运行结果

    如果问题解决,代码将成功连接到Hive服务器,执行查询,并打印出结果集。

    推荐相关链接

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 4月28日