HBase 쿼리 예: HBase의 put(), get(), scan() 명령
HBase 테이블에 데이터 쓰기: 셸
put 명령은 데이터를 테이블에 저장하는 데 사용됩니다.
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
이 명령은 다음과 같은 작업에 사용됩니다.
- 정의되거나 지정된 테이블이나 행 또는 열에 셀 '값'을 입력합니다.
- 선택적으로 타임스탬프를 조정합니다.
예:
- 여기서는 r99 행과 c1 열 아래의 "guru1" 테이블에 값을 배치합니다.
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- 아래 스크린샷과 같이 "guru10,15" 테이블에 30, 99이라는 세 가지 값을 배치했습니다.
- g와 같은 테이블 참조가 있는 "Guru99" 테이블이 있다고 가정해 보겠습니다. 다음과 같이 테이블 참조에 대해 명령을 실행할 수도 있습니다.
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- "guru99"에 값을 입력하면 위 스크린샷과 같이 출력이 표시됩니다.
HBase 테이블에서 데이터 읽기: 셸
이 섹션에서는 다음 사항을 확인합니다.
- HBase 테이블 "guru99"에 삽입되는 값
- HBase 테이블에 값이 있는 열 이름 guru99
위의 스크린샷을 통해 추론할 수 있습니다.
- HBase 셸에서 "scan" 명령을 실행하면 다음과 같이 "guru99"에 삽입된 값이 표시됩니다.
- HBase 셸에서는 열 및 행 이름과 함께 코드에 의해 삽입된 값을 표시합니다.
- 여기에 삽입된 열 이름이 "education"과 "projects"인 것을 볼 수 있습니다.
- 삽입된 값은 "BigData" 및 "HBase Tutorials"를 언급된 열에 포함
Get 명령을 사용하여 테이블에서 데이터를 읽을 수도 있습니다.
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
여기 TIMERANGE, TIMESTAMP, VERSIONS 및 필터가 포함됩니다.
이 명령을 사용하면 테이블에 있는 행 또는 셀 내용을 얻을 수 있습니다. 그 외에도 TIMESTAMP, TIMERANGE,VERSIONS, FILTERS 등과 같은 추가 매개변수를 추가하여 특정 행이나 셀 내용을 가져올 수도 있습니다.
예:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
테이블 “guru99”의 경우 r1 행과 c1 열 값은 위 스크린샷과 같이 이 명령을 사용하여 표시됩니다.
hbase> get 'guru99', 'r1'
테이블 "guru99"의 경우 이 명령을 사용하면 r1 행 값이 표시됩니다.
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
테이블 "guru99"의 경우 ts1 및 ts1 시간 범위의 행 2 값이 이 명령을 사용하여 표시됩니다.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
테이블 "guru99"의 경우 행 r1과 열 패밀리의 c1, c2, c3 값이 이 명령을 사용하여 표시됩니다.
HBase 테이블에 데이터 쓰기: JAVA API
이 단계에서는 HBase 테이블 “guru99”에 데이터를 쓰겠습니다.
먼저 다음을 사용하여 HBase에서 값을 삽입하고 검색하는 코드를 작성해야 합니다.HBaseLoading.java 프로그램.
컬럼 레벨에서 테이블에 값을 생성하고 삽입하려면 아래와 같이 코딩해야 합니다..
위 스크린샷에서
- HBase 구성을 생성하면 작업 중에 base-site.xml 및 hbase-default.xml 파일에 설정한 구성이 무엇이든 가리킵니다. HBase 설치
- HTable 메소드를 사용하여 "guru99" 테이블 생성
- 테이블 “guru1”에 row99 추가
- 열 이름 "education" 및 "projects"를 지정하고 해당 행의 열 이름에 값을 삽입합니다1. 여기에 삽입된 값은 “BigData”와 “HBaseTutorials”입니다.
HBase 테이블에서 데이터 읽기: Java API
위 섹션에서 HBase 테이블에 배치한 값이 무엇이든 여기서는 해당 값을 가져와 표시합니다.
"guru99"에 저장된 결과를 검색하려면
위 스크린샷은 HBase 테이블 'guru99'에서 데이터를 읽는 중임을 보여줍니다.
- 여기서는 "education" 및 "projects"와 같은 열 패밀리에 저장된 값을 가져오겠습니다.
- "get" 명령을 사용하여 HBase 테이블에 저장된 값을 가져옵니다.
- "scan" 명령을 사용한 스캔 결과. row1에 저장된 값은 콘솔에 표시됩니다.
코드 작성이 완료되면 실행해야 합니다. 자바 이와 같은 응용 프로그램
- HBaseLoading.java를 마우스 오른쪽 버튼으로 클릭하세요. -> 다음으로 실행 -> Java 어플리케이션
- "HBaseLoading .java"를 실행한 후 HBase의 각 열에 있는 "guru99"에 삽입할 값을 동일한 프로그램에서 검색할 수도 있습니다.
다음은 완전한 코드입니다.
import java.io.IOException; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Bytes; public class HBaseLoading { public static void main(String[] args) throws IOException { /* When you create a HBaseConfiguration, it reads in whatever you've set into your hbase-site.xml and in hbase-default.xml, as long as these can be found on the CLASSPATH*/ org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create(); /*This instantiates an HTable object that connects you to the "test" table*/ HTable table = new HTable(config, "guru99"); /* To add to a row, use Put. A Put constructor takes the name of the row you want to insert into as a byte array.*/ Put p = new Put(Bytes.toBytes("row1")); /*To set the value you'd like to update in the row 'row1', specify the column family, column qualifier, and value of the table cell you'd like to update. The column family must already exist in your table schema. The qualifier can be anything.*/ p.add(Bytes.toBytes("education"), Bytes.toBytes("col1"),Bytes.toBytes("BigData")); p.add(Bytes.toBytes("projects"),Bytes.toBytes("col2"),Bytes.toBytes("HBaseTutorials")); // Once you've adorned your Put instance with all the updates you want to make, to commit it do the following table.put(p); // Now, to retrieve the data we just wrote. Get g = new Get(Bytes.toBytes("row1")); Result r = table.get(g); byte [] value = r.getValue(Bytes.toBytes("education"),Bytes.toBytes("col1")); byte [] value1 = r.getValue(Bytes.toBytes("projects"),Bytes.toBytes("col2")); String valueStr = Bytes.toString(value); String valueStr1 = Bytes.toString(value1); System.out.println("GET: " +"education: "+ valueStr+"projects: "+valueStr1); Scan s = new Scan(); s.addColumn(Bytes.toBytes("education"), Bytes.toBytes("col1")); s.addColumn(Bytes.toBytes("projects"), Bytes.toBytes("col2")); ResultScanner scanner = table.getScanner(s); try { for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { System.out.println("Found row : " + rr); } } finally { // Make sure you close your scanners when you are done! scanner.close(); } } }
제품 개요
이 튜토리얼에서 논의한 것처럼 put 명령을 사용하여 테이블에 데이터를 삽입할 수 있습니다. scan, get 명령을 사용하여 테이블에서 데이터를 읽을 수 있습니다.