복붙노트

[HADOOP] HBase REST 서비스를 통해 Phoenix 테이블 데이터를 얻는 방법

HADOOP

HBase REST 서비스를 통해 Phoenix 테이블 데이터를 얻는 방법

다음 코드 스 니펫에서 Phoenix JDBC 드라이버를 사용하여 HBase 테이블을 만들었습니다.

    Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
    Connection conn =  DriverManager.getConnection("jdbc:phoenix:serverurl:/hbase-unsecure");
    System.out.println("got connection");

    conn.createStatement().execute("CREATE TABLE IF NOT EXISTS phoenixtest (id BIGINT not null primary key, test VARCHAR)");

    int inserted = conn.createStatement().executeUpdate("UPSERT INTO phoenixtest VALUES (5, '13%')");
    conn.commit();

    System.out.println("Inserted or updated " + inserted + " rows");

    ResultSet rst = conn.createStatement().executeQuery("select * from phoenixtest");

    while (rst.next()) {
      System.out.println(rst.getString(1) + " " + rst.getString(2));
    }

테이블이 만들어지고 테이블 루핑이 제대로 작동합니다.

이제 "원시"HBase 프로그래밍에서 알 수 있듯이 HBase REST 서비스를 통해 테이블 ​​데이터를 얻으려고했습니다.

url http : // server-url : 12345 / PHOENIXTEST / schema가 제대로 작동하고 요청한 테이블 정보를 돌려줍니다.

하지만 예를 들면 http : // server-url : 12345 / PHOENIXTEST / 5 (처음 삽입 한 행의 키가 5 였고 위의 코드 참조), Not found 메시지가 다시 나타납니다.

HBase REST 서비스를 통해 데이터를 얻으려면 어떻게해야합니까?

해결법

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

    1.Phoenix가 HBase 테이블에 저장하는 데이터를 인코딩하는 방법과 네이티브 REST API가 키를 찾는 방법에 대한 문제가있을 것입니다.

    Phoenix가 HBase 테이블에 저장하는 데이터를 인코딩하는 방법과 네이티브 REST API가 키를 찾는 방법에 대한 문제가있을 것입니다.

    BIGINT의 데이터 유형에 대한 Phoenix 문서를 보면 다음과 같습니다 :

    따라서 실제로 테이블에 실제로 삽입 된 것을 살펴 봐야합니다. HBase REST API는 아마도 다른 인코딩을 사용하는 키를 찾고 있으므로 찾을 수 없습니다.

  2. ==============================

    2.HBase가 아닌 phoenix를 사용하여 phoenix 테이블에서 데이터를 가져와야합니다. Phoenix use는 Integer 및 BigInt에 대한 사용자 정의 인코딩입니다 (사용하는 경우).

    HBase가 아닌 phoenix를 사용하여 phoenix 테이블에서 데이터를 가져와야합니다. Phoenix use는 Integer 및 BigInt에 대한 사용자 정의 인코딩입니다 (사용하는 경우).

    Phoenix는 데이터를 저장하기 위해 바이트를 주로 사용하고 인코딩을 위해 StringBinary를 사용합니다. 따라서 키가 5가 아니라 \ x80 \ x00 \ x00 \ x05 (정수) 일 확률이 높습니다.

  3. from https://stackoverflow.com/questions/38070251/how-to-obtain-phoenix-table-data-via-hbase-rest-service by cc-by-sa and MIT license