비트 올림 된 정수 플래그 또는 합계 열과 같이 덮어 쓰지 않고 점진적으로 업데이트되는 열이 있다고 가정합니다.hbase에서 셀 병합을 수행 할 수 있습니까?
기존 셀 : [키 'K1', F1 : 합계 : 100]
Upcomming 새로운 셀 : [키 'K1', F1 : 합계 : 200 (예를 들어, 단지 1 개의 버전을 가정) 합계 = 100 + 200 = 300 최종 기록 항복 :
[키 'K1', F1을 :]
그럼 I 셀 데이터 이런 식으로 업데이트 할 합계 : 300]
여기 내가 원하는 MERGE 새 셀을 동일한 키가있는 이전 셀에 넣습니다. 어떻게해야합니까? 직접 을 입력하면을 입력하면 기존 셀을 덮어 쓰게됩니다. (다시 한 가지 버전 만 유지됩니다).
나는 몇 가지 아이디어를 제공하지만, 그래도 만족하지 않는 것 :
1> 클라이언트 측에서 먼저 이전 값은 다음 가 객체를 넣어가는에에 합계를 추가를 얻을.
2> 보조 프로세서를 사용하십시오. RegionObserver.prePut에서 get, add 및 final을 수정합니다 넣어 개체입니다. 이것은 계산을 서버 측에 푸시하지만 추가 쿼리 (get) (비싼)가 먼저 필요합니다.
실시간 쿼리 시나리오에서 위의 작업 외에도 대량로드 데이터 병합은 무엇입니까?
나는 꽤 오랫동안 문서를 검토했지만 아직 단서를 찾을 수 없습니다. 이것에 대해 몇 가지 생각을 나눌 수 있다면 정말 고맙겠습니다.
저는 hbase-1.2.6을 사용하고 있습니다. 감사!
필자의 경우 새로운 셀 값은 기존 셀에 따라 달라지며 단순한 incr 또는 append보다 더 복잡 할 수 있습니다. 예를 들어, 나는 정수형 K 인 오래된 셀 값을 가지고 있으며이를 K_new = K^K '로 업데이트하려고합니다. 여기서 K'는 생산에서 값의 증분 종류입니다. 어쩌면 관련 API를 찾았습니다. 표 :: checkAndPut (https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/HTable.html#checkAndPut-byte:A-byte:A-byte : A-byte : A-org.apache.hadoop.hbase.client.Put-). 하지만 어떻게 사용하는지 모르겠습니다. 도움이 될 것이라고 생각하십니까? 감사. – user1206899
나는 위에 나열된 API 만 원자 조작을 달성하는 데 도움이된다고 생각합니다. 결국 나는 어떤 의미에서든 풋을 뒤따라해야합니다. – user1206899