[HADOOP] 행 키에 대해 다른 값을 넣을 수 있지만 hbase에 동일한 타임 스탬프를 넣는 솔루션은 무엇입니까?
HADOOP행 키에 대해 다른 값을 넣을 수 있지만 hbase에 동일한 타임 스탬프를 넣는 솔루션은 무엇입니까?
나는 Hbase에 새로운 사람이야. Hbase에 텍스트 파일의 데이터를 대량로드 할 때 문제가 있습니다. 다음 표가 있다고 가정합니다.
Key_id | f1:c1 | f2:c2
row1 'a' 'b'
row1 'x' 'y'
나는 타임 스탬프를 지정하는 아이디어에 대해 생각하고 있지만 대량로드에 대해 자동으로 타임 스탬프를 설정하는 방법을 모르며로드 성능에 영향을 줍니까 ?? 큰 데이터를 위해 가장 빠르고 안전하게 프로세스를 가져와야합니다.
많은 조언을 주셔서 감사합니다!
해결법
-
==============================
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.레코드를 덮어 써야하는 경우 hbase 테이블을 하나의 버전 만 기억하도록 설정할 수 있습니다.
레코드를 덮어 써야하는 경우 hbase 테이블을 하나의 버전 만 기억하도록 설정할 수 있습니다.
이 페이지에서는 가능한 최대 속도로 hbase에 대량로드하는 방법을 설명합니다.
hbase 대량로드 사용 방법 및 이유
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
'HADOOP' 카테고리의 다른 글
[HADOOP] Distcp - 컨테이너가 실제 메모리 제한을 초과하여 실행 중입니다. (0) | 2019.07.20 |
---|---|
[HADOOP] java.lang.NoSuchMethodError : org.apache.hadoop.conf.Configuration.reloadExistingConfigurations () V (0) | 2019.07.20 |
[HADOOP] Apache SPARK : 브로드 캐스트 변수에 대한 -Nullpointer 예외 (YARN 클러스터 모드) (0) | 2019.07.20 |
[HADOOP] Apache Spark의 맥락에서 메모리 내 데이터 저장은 무엇을 의미합니까? (0) | 2019.07.20 |
[HADOOP] hiveql에서 열을 행으로 변환 (UNPIVOT) (0) | 2019.07.20 |