2016-06-23 4 views
0

자바 API를 통해 HBase 테이블을 만들고 Put을 통해 데이터를 추가했습니다. 나는 또한 대응하는 Get으로 자바의 데이터를 읽을 수있다. HBase 문서에 따르면 GET 요청을 사용하여 셀 값을 읽을 수도 있습니다. 브라우저의 경우 documentation을 참조하십시오. 그 결과가 XML은HBase : 타임 스탬프가있는 행 데이터에 대한 GET 요청

http://my_hbase_url:12345/dm-table/exampleRow/family:html?v=1 

및 다음과 같습니다 :

<CellSet> 
    <Row key="ZXhhbXBsZVJvdw=="> 
    <Cell column="ZmFtaWx5Omh0bWw=" timestamp="1466667016879">PGh0bWw+Li4uTXkgSFRNTC4uLjwvaHRtbD4=</Cell> 
    </Row> 
</CellSet> 

당신이이 타임 스탬프를 읽어보십시오

다음 요청은 전체 행을 반환하는 나를 위해 작동 내가

http://my_hbase_url:12345/dm-table/exampleRow/family:html/1466667016879 

를 호출 할 때 1466667016879,하지만 나는 not found 재를 얻을 수 sult! 또한 자바 코드가 작동하고 저에게이 타임 스탬프를 제공합니다

HTable table = new HTable(config, TABLE_NAME.getBytes()); 

Get g = new Get("exampleRow".getBytes()); 
g.setTimeStamp(1466667016879L); 

Result r = table.get(g); 
System.out.println("Timestamp: " + r.rawCells()[0].getTimestamp()); 

byte[] value = r.getValue(CF_DEFAULT.getBytes(), "html".getBytes()); 
String valueStr = new String(value); 
System.out.println("GET: " + valueStr); 

이 인쇄 :

Timestamp: 1466667016879 
GET: <html>...My HTML...</html> 

그래서 타임 스탬프가 존재하지만, 타임 스탬프와 함께 작동하지 않습니다 HTTP GET 요청을 누군가가 도와 드릴까요?

+0

내가 조사했지만'family : html'을 사용할 수 없습니다. HBase 2.0 전용입니까? – Whitefret

+0

column-familiy "family"와 "html"열은 내 테이블 예제에서 나온 것입니다.이 구조로 테이블을 만들었습니다. HBase 1.1.2에서 HDP 2.4를 사용합니다. –

+0

나는 바보입니다./... 좋은 XML 응답 대신 파일을 다운로드합니다. 그것을 다시 들여다 보겠습니다. – Whitefret

답변

1

URL의 타임 스탬프는 EARLIER 타임 스탬프가있는 최신 데이터 세트를 찾습니다.

당신이 호출 할 때, 예를 들어 :

그래서 다음의 예를 보라 , 최신 데이터 집합을 얻을 수있는 URL에 타임 스탬프를 추가 할 수 있도록 당신이 (당신은 저장된 데이터의 다른 버전을 가지고 있기 때문에 예를 들어) 타임 스탬프를 통해이 결과를 얻으려면

<CellSet> 
    <Row key="ZXhhbXBsZVJvdw=="> 
    <Cell column="ZmFtaWx5Omh0bWw=" timestamp="1466667016879">PGh0bWw+Li4uTXkgSFRNTC4uLjwvaHRtbD4=</Cell> 
    </Row> 
</CellSet> 

: http://my_hbase_url:12345/dm-table/exampleRow/family:html 다음과 같은 결과를 얻을 수 이전 타임 스탬프. 당신이 URL에 /<timestamp + 1>을 추가 할 필요가 위에 그래서, 데이터 세트를 같이 얻을 : 위의 그림과 같이

http://my_hbase_url:12345/dm-table/exampleRow/family:html/1466667016880 

이 같은 결과를 제공합니다. 이 버전이 유일하거나 가장 오래된 버전 인 경우 http://my_hbase_url:12345/dm-table/exampleRow/family:html/1466667016879을 호출하면 위의 질문에서 설명한대로 결과가 나타나지 않고 not found 결과로 끝납니다.

그러나 예상 데이터를 얻으려면 <timestamp + 1> (또는 그 이상)을 사용해야합니다!

감사합니다.이 해결 힌트는 @WHITEfret입니다.

+0

은 jira 링크이며 첫 번째 주석은 동작을 설명합니다. https://issues.apache.org/jira/browse/HBASE-16106 – Whitefret