使用Java JDBC连接Hive和Oracle数据库,并使用Hive JDBC和Oracle JDBC驱动程序进行数据读取和写入。下面是一个简单的Java代码示例,用于将Hive表中的数据同步到Oracle数据库:

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

public class Hive2Oracle {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // Hive连接信息
        String hiveUrl = "jdbc:hive2://<hive_host>:<hive_port>/<hive_db>";
        String hiveUser = "<hive_user>";
        String hivePassword = "<hive_password>";
        String hiveTable = "<hive_table>";

        // Oracle连接信息
        String oracleUrl = "jdbc:oracle:thin:@<oracle_host>:<oracle_port>:<oracle_sid>";
        String oracleUser = "<oracle_user>";
        String oraclePassword = "<oracle_password>";
        String oracleTable = "<oracle_table>";

        // 加载Hive JDBC驱动
        Class.forName("org.apache.hive.jdbc.HiveDriver");

        // 连接Hive数据库
        Connection hiveConn = DriverManager.getConnection(hiveUrl, hiveUser, hivePassword);

        // 创建Hive表查询语句
        String hiveQuery = "SELECT * FROM " + hiveTable;

        // 执行Hive表查询
        Statement hiveStmt = hiveConn.createStatement();
        ResultSet hiveRs = hiveStmt.executeQuery(hiveQuery);

        // 加载Oracle JDBC驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 连接Oracle数据库
        Connection oracleConn = DriverManager.getConnection(oracleUrl, oracleUser, oraclePassword);

        // 创建Oracle表插入语句
        String oracleInsert = "INSERT INTO " + oracleTable + " VALUES (?,?,?,?)";

        // 执行Oracle表插入
        while (hiveRs.next()) {
            // 从Hive结果集中读取数据
            String col1 = hiveRs.getString(1);
            String col2 = hiveRs.getString(2);
            String col3 = hiveRs.getString(3);
            String col4 = hiveRs.getString(4);

            // 创建Oracle表插入语句并设置参数
            Statement oracleStmt = oracleConn.createStatement();
            oracleStmt.executeUpdate(oracleInsert);
            oracleStmt.setString(1, col1);
            oracleStmt.setString(2, col2);
            oracleStmt.setString(3, col3);
            oracleStmt.setString(4, col4);
            oracleStmt.close();
        }

        // 关闭连接
        hiveRs.close();
        hiveStmt.close();
        hiveConn.close();
        oracleConn.close();
    }
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Oracle2Hive {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // Oracle连接信息
        String oracleUrl = "jdbc:oracle:thin:@<oracle_host>:<oracle_port>:<oracle_sid>";
        String oracleUser = "<oracle_user>";
        String oraclePassword = "<oracle_password>";
        String oracleTable = "<oracle_table>";

        // Hive连接信息
        String hiveUrl = "jdbc:hive2://<hive_host>:<hive_port>/<hive_db>";
        String hiveUser = "<hive_user>";
        String hivePassword = "<hive_password>";
        String hiveTable = "<hive_table>";

        // 加载Oracle JDBC驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 连接Oracle数据库
        Connection oracleConn = DriverManager.getConnection(oracleUrl, oracleUser, oraclePassword);

        // 创建Oracle表查询语句
        String oracleQuery = "SELECT * FROM " + oracleTable;

        // 执行Oracle表查询
        Statement oracleStmt = oracleConn.createStatement();
        ResultSet oracleRs = oracleStmt.executeQuery(oracleQuery);

        // 加载Hive JDBC驱动
        Class.forName("org.apache.hive.jdbc.HiveDriver");

        // 连接Hive数据库
        Connection hiveConn = DriverManager.getConnection(hiveUrl, hiveUser, hivePassword);

        // 创建Hive表插入语句
        String hiveInsert = "INSERT INTO " + hiveTable + " VALUES (?,?,?,?)";

        // 执行Hive表插入
        while (oracleRs.next()) {
            // 从Oracle结果集中读取数据
            String col1 = oracleRs.getString(1);
            String col2 = oracleRs.getString(2);
            String col3 = oracleRs.getString(3);
            String col4 = oracleRs.getString(4);

            // 创建Hive表插入语句并设置参数
            Statement hiveStmt = hiveConn.createStatement();
            hiveStmt.executeUpdate(hiveInsert);
            hiveStmt.setString(1, col1);
            hiveStmt.setString(2, col2);
            hiveStmt.setString(3, col3);
            hiveStmt.setString(4, col4);
            hiveStmt.close();
        }

        // 关闭连接
        oracleRs.close();
        oracleStmt.close();
        oracleConn.close();
        hiveConn.close();
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐