2012-08-17 2 views
0

어제의 데이터베이스 스냅 샷이 포함 된 파일을 매일 가져와야합니다. 가져 오려면 나는 쉘에서 다음 명령을 사용대량로드 : 중복 값을 가져 오지 마십시오

./bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \ 
    '-Dimporttsv.separator=|' \ 
    -Dimporttsv.columns=HBASE_ROW_KEY,info:date,info:author,info:text \ 
    tableName \ 
    inputFile.tsv 

문제는 각 라인은 각 열의하지만 같은 값을 여러 버전을 가지고 결과, 모든 값뿐 아니라 업데이트 된 것들을 포함한다.

중복 값을 무시하고이 일일 스냅 샷을 가져 오는 다른 방법이 있습니까? 또는이 문제를 해결하기위한 제안?

감사합니다.

답변

0

기존 값을 무시하고 싶다면 가져 오기 프로그램 대신지도/축소를 직접 작성해야합니다.

그러나 여러 버전의 경우 어떤 문제가 발생합니까? 먼저 hbase의 버전 수를 설정할 수 있습니다 (열 패밀리를 정의 할 때). 두 번째로 최신 버전을 읽을 수있을 때 마지막으로 읽을 수 있고, 마지막으로 저장소에 대해 걱정할 경우 hbase로 압축을 설정할 수 있습니다.

+0

그 대답에 가까워지면서 내 데이터를 가져 오기 위해 내 자신의지도/감축 함수를 작성합니다. 여러 버전에 관해서는 당신이 말한 것처럼 실제 문제는 아니지만 디스크 용량을 확장하는 것만으로 모든 버전을 저장할 수 있습니다. 내 질문은 저장 값을 두 번 저장하지 않고 같은 셀에 동일한 값의 여러 버전을 저장하는 방법이었습니다. – nmc

+0

내가 말했듯이 압축을 사용하면 용량에 대해 크게 걱정할 필요가 없습니다. 버전을 1로 설정하면 열 집합에 대해 hbase이 압축시 중복을 제거합니다. –

+1

내 관심사는 디스크 공간에 관한 것이 아닙니다. 저는 어떤 시점에서 "세계"의 상태가 무엇인지 알아야하는 프로젝트에서 일하고 있습니다. 예를 들어, "이 셀에 대해 한 달 전의 가치는 무엇입니까?". 이를 위해 셀을 버전 화해야합니다. 그러나 (예를 들어 같은 값이기 때문에) 실제로 업데이트되지 않고 매일 셀을 업데이트하면 버전을 낭비합니다./Hbase 성능 측면에서 최대 버전을 설정하는 데 문제가 없다고 생각합니까? 칼럼 가족은 365 (1 년 동안의 역사를 유지하기에 충분합니다)라고 말할 수 있습니까? 도와 줘서 고마워! – nmc