วันพฤหัสบดีที่ 4 กันยายน พ.ศ. 2557

ติดต่อ Big Data (Hadoop) ผ่าน Jdbc ด้วย Hive และ Impala

บ้านเรายังไม่ค่อยตื่นตัวเรื่อง Big Data กันสักเท่าไหร่ แต่พอดีผมได้มีโอกาสทำงานกับข้อมูลเดือนละหลักพันล้าน record / ใช้พวก relation database เอาไม่อยู่ครับ query ง่าย ๆ ใช้เวลากันครึ่งค่อนวันเลยทีเดียว เจ้า Big Data เลยเป็นอีกทางเลือก มาลองดูกันว่าจะเข้าไปคุยกับมันยังไงดี  ในที่นี้เป็น Cloudera Pack (Hadoop,hive,impala...)

- library ที่ต้องใช้


























1. Jdbc Hive ตัวอย่างการเขียน ดึงข้อมูลมาแสดง

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

public class HiveConnection {

    private static final String driver = "org.apache.hive.jdbc.HiveDriver";
    private static final int hive_port = 10000;
    private static final String host = "127.0.0.1";
    private static final String db = "hadoopdb";

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName(driver);
        return DriverManager.getConnection("jdbc:hive2://" + host + ":" + hive_port + "/" + db);
    }

    public static void main(String[] args) {

        System.out.println("\n=============================================");

        System.out.println("start....");
        Connection con = null;

        try {
            con = getConnection();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("select * from table_name");
            while (rs.next()) {
                System.out.println("-" + rs.getString(1));
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (Exception e) {
            }
        }
    }
}

2. Jdbc Impala ตัวอย่างการเขียน ดึงข้อมูลมาแสดง

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

public class ImpalaConnection {

    private static final String driver = "org.apache.hive.jdbc.HiveDriver";
    private static final int impala_port = 21050;
    private static final String host = "127.0.0.1";
    private static final String db = "hadoopdb";

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName(driver);
        return DriverManager.getConnection("jdbc:hive2://" + host + ":" + impala_port + "/" + db + ";auth=noSasl");
    }

    public static void main(String[] args) {

        System.out.println("\n=============================================");

        System.out.println("start....");
        Connection con = null;

        try {
            con = getConnection();

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery("select * from table_name");
            
            while (rs.next()) {
                System.out.println("-" + rs.getString(1));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (Exception e) {
            }
        }
    }
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น