복붙노트

[HADOOP] 자바 API를 사용하여 jdbc와 같은 hbase 쉘 명령을 직접 보내려면 어떻게해야합니까?

HADOOP

자바 API를 사용하여 jdbc와 같은 hbase 쉘 명령을 직접 보내려면 어떻게해야합니까?

자바 API를 사용하여 jdbc와 같은 hbase 쉘 명령을 직접 보내려면 어떻게해야합니까?

public static void main(String args[]) {
    // get Connection to connect hbase
    Connection conn = ....;
    // hbase shell command
    String cmd = "get 't1','r1'";

    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(cmd);
    while(rs.next()) {
       ...
    }
}

거기에 자바 API가 없다면 목표를 달성 할 수있는 또 다른 방법이 있습니까?

해결법

  1. ==============================

    1.그래도 자바에서 준비를하거나 텍스트 파일에 명령 목록을 넣고 RunTime.execute를 사용하고 싶다면 hbase shell

    그래도 자바에서 준비를하거나 텍스트 파일에 명령 목록을 넣고 RunTime.execute를 사용하고 싶다면 hbase shell

    내 대답 1을 보거나 2 가지를 대답하십시오. 나는 spark 제출 및 mapreduce 작업에 대해 그렇게 해왔다. 위에서 설명한 hbase 쉘 실행에 대해 같은 방법을 사용할 수 있습니다.

    SQL에서 Hbase에 액세스하려면 Phoenix를 사용할 수 있습니다. - https://phoenix.apache.org/faq.html - 이것 좀 봐

    임팔라 또는 하이브로 확인할 수도 있습니다.

    import java.sql.*;
    
    public class PhoenixExample {
    
        public static void main(String[] args) {
            // Create variables
            Connection connection = null;
            Statement statement = null;
            ResultSet rs = null;
            PreparedStatement ps = null;
    
            try {
                // Connect to the database
                connection = DriverManager.getConnection("jdbc:phoenix:localhost");
    
                // Create a JDBC statement
                statement = connection.createStatement();
    
                // Execute our statements
                statement.executeUpdate("create table javatest (mykey integer not null primary key, mycolumn varchar)");
                statement.executeUpdate("upsert into javatest values (1,'Hello')");
                statement.executeUpdate("upsert into javatest values (2,'Java Application')");
                connection.commit();
    
                // Query for table
                ps = connection.prepareStatement("select * from javatest");
                rs = ps.executeQuery();
                System.out.println("Table Values");
                while(rs.next()) {
                    Integer myKey = rs.getInt(1);
                    String myColumn = rs.getString(2);
                    System.out.println("\tRow: " + myKey + " = " + myColumn);
                }
            }
            catch(SQLException e) {
                e.printStackTrace();
            }
            finally {
                if(ps != null) {
                    try {
                        ps.close();
                    }
                    catch(Exception e) {}
                }
                if(rs != null) {
                    try {
                        rs.close();
                    }
                    catch(Exception e) {}
                }
                if(statement != null) {
                    try {
                        statement.close();
                    }
                    catch(Exception e) {}
                }
                if(connection != null) {
                    try {
                        connection.close();
                    }
                    catch(Exception e) {}
                }
            }
        }
    }
    

    당신이 아래에 maven을 사용한다면 의존성이 있습니다 ...

    <dependency>
                <groupId>org.apache.phoenix</groupId>
                <artifactId>phoenix-core</artifactId>
                <version>4.6.0-HBase-1.1</version>
            </dependency>
    
  2. from https://stackoverflow.com/questions/39258139/how-to-use-java-api-to-send-hbase-shell-command-directly-like-jdbc by cc-by-sa and MIT license