복붙노트

[HADOOP] 행 키에 대해 다른 값을 넣을 수 있지만 hbase에 동일한 타임 스탬프를 넣는 솔루션은 무엇입니까?

HADOOP

행 키에 대해 다른 값을 넣을 수 있지만 hbase에 동일한 타임 스탬프를 넣는 솔루션은 무엇입니까?

나는 Hbase에 새로운 사람이야. Hbase에 텍스트 파일의 데이터를 대량로드 할 때 문제가 있습니다. 다음 표가 있다고 가정합니다.

Key_id | f1:c1 | f2:c2
row1     'a'     'b'
row1     'x'     'y'

나는 타임 스탬프를 지정하는 아이디어에 대해 생각하고 있지만 대량로드에 대해 자동으로 타임 스탬프를 설정하는 방법을 모르며로드 성능에 영향을 줍니까 ?? 큰 데이터를 위해 가장 빠르고 안전하게 프로세스를 가져와야합니다.

많은 조언을 주셔서 감사합니다!

해결법

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

    1.Q1 : Hbase는 타임 스탬프를 사용하여 버전을 관리합니다. 당신이 제공하지 않을 경우 hbase 시스템에 의해 제공되는 기본값을 취할 것입니다.

    Q1 : Hbase는 타임 스탬프를 사용하여 버전을 관리합니다. 당신이 제공하지 않을 경우 hbase 시스템에 의해 제공되는 기본값을 취할 것입니다.

    put 요구에서 당신은 그런 필요 조건이있는 경우에 주문 시간을 또한 새롭게 할 수있다. 성능에 영향을 미치지 않습니다.

    Q2 : 당신은 2 가지 방법으로 그것을 할 수 있습니다.

    예 : 일괄 처리 기법을 사용하는 # 1 Simple Java 클라이언트.

    hbase puts를 json (사용자의 독립형 csv 클라이언트와 유사하게)을 구문 분석하기위한 100000 레코드의 일괄 List 개체로 사용했습니다.

    아래는 이것을 달성 한 코드 스 니펫입니다. 다른 형식도 구문 분석하는 동안 동일한 작업을 수행 할 수 있음)

    2 곳에서이 메소드를 호출해야 할 수도 있습니다.

    1) 100000 레코드의 일괄 처리.

    2) 일괄 처리 레코드 미리 알림 처리시 100000 미만

      public void addRecord(final ArrayList<Put> puts, final String tableName) throws Exception {
            try {
                final HTable table = new HTable(HBaseConnection.getHBaseConfiguration(), getTable(tableName));
                table.put(puts);
                LOG.info("INSERT record[s] " + puts.size() + " to table " + tableName + " OK.");
            } catch (final Throwable e) {
                e.printStackTrace();
            } finally {
                LOG.info("Processed ---> " + puts.size());
                if (puts != null) {
                    puts.clear();
                }
            }
        }
    

    참고 : 배치 크기는 내부적으로 hbase.client.write.buffer에 의해 다음과 같이 config xml 중 하나에서 제어됩니다

    <property>
             <name>hbase.client.write.buffer</name>
             <value>20971520</value> // around 2 mb i guess
     </property>
    

    기본값은 2MB 크기입니다. 버퍼가 채워지면 실제로 모든 테이블을 플러시하여 테이블에 삽입합니다.

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

    2.레코드를 덮어 써야하는 경우 hbase 테이블을 하나의 버전 만 기억하도록 설정할 수 있습니다.

    레코드를 덮어 써야하는 경우 hbase 테이블을 하나의 버전 만 기억하도록 설정할 수 있습니다.

    이 페이지에서는 가능한 최대 속도로 hbase에 대량로드하는 방법을 설명합니다.

    hbase 대량로드 사용 방법 및 이유

  3. from https://stackoverflow.com/questions/38633419/solutions-to-put-different-values-for-a-row-key-but-the-same-timestamps-in-hbase by cc-by-sa and MIT license