2014-05-09 1 views
1

우리는 AccountId 및 unixtimestamp와 같은 행 키가있는 hbase 테이블을 가지고 있습니다.유닉스 타임 스탬프가 로우 키의 일부일 때 hbase 테이블을 스캔하는 방법은 무엇입니까?

예 :

Account Id: ACNTID 
unixtimestamp: 1359694800000 

1359694800000은 내가주고 날짜에 계정 ID에 대한 쿼리를 찾고 있어요 2013년 2월 1일

에 대한 가치인가? startrow를 사용하여 행 논리를 중지 할 수 있습니까? 다른 방법?

답변

1

올바른 길을 가고 있습니다. startrow는 포괄적이며 end 행은 배타적입니다. end 행의 unix timestamp에 1을 더하면 설정됩니다. 귀하의 경우 타임 스탬프가 가장 rowkey의 한 부분을 얻거나, 혼자 STARTROW & STOPROW를 사용하지 않는이 righter에 있기 때문에

scan 'mytable', {STARTROW => 'ACNTID1359694800000', ENDROW => 'ACNTID1359694800001'} 
0

귀하의 rowkey 구조는 주어진 유닉스 타임 스탬프에 대한 계정 아이디의를 받고 지원하지 않습니다. 원하는 결과를 얻으려면 쿼리가 테이블의 모든 행 키를 스캔하고 주어진 타임 스탬프에 대해 필터링을 수행해야합니다. HBase는 RowFilter이라는 필터를 Scan과 함께 사용하여 HBase에서 반환하는 행을 제한합니다. 행키를 텍스트로 저장하므로 SubStringComparator 또는 RegexStringComparatorRowFilter과 함께 사용할 수 있습니다. 이것의 명령 줄 상당

scan 'table_name', { FILTER =>"RowFilter(=,'substring:1359694800000')"} 

위의 명령은 rowkey에서 1359694800000을 가지고 모든 행을 반환합니다입니다.