HBase-스캔
HBase Shell을 사용하여 스캔
그만큼 scan명령은 HTable의 데이터를 보는 데 사용됩니다. 스캔 명령을 사용하여 테이블 데이터를 가져올 수 있습니다. 구문은 다음과 같습니다.
scan ‘<table name>’
예
다음 예는 scan 명령을 사용하여 테이블에서 데이터를 읽는 방법을 보여줍니다. 여기서 우리는emp 표.
hbase(main):010:0> scan 'emp'
ROW COLUMN + CELL
1 column = personal data:city, timestamp = 1417521848375, value = hyderabad
1 column = personal data:name, timestamp = 1417521785385, value = ramu
1 column = professional data:designation, timestamp = 1417585277,value = manager
1 column = professional data:salary, timestamp = 1417521903862, value = 50000
1 row(s) in 0.0370 seconds
Java API를 사용하여 스캔
Java API를 사용하여 전체 테이블 데이터를 스캔하는 전체 프로그램은 다음과 같습니다.
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
public class ScanTable{
public static void main(String args[]) throws IOException{
// Instantiating Configuration class
Configuration config = HBaseConfiguration.create();
// Instantiating HTable class
HTable table = new HTable(config, "emp");
// Instantiating the Scan class
Scan scan = new Scan();
// Scanning the required columns
scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city"));
// Getting the scan result
ResultScanner scanner = table.getScanner(scan);
// Reading values from scan result
for (Result result = scanner.next(); result != null; result = scanner.next())
System.out.println("Found row : " + result);
//closing the scanner
scanner.close();
}
}
위의 프로그램을 아래와 같이 컴파일하고 실행합니다.
$javac ScanTable.java
$java ScanTable
다음은 출력이어야합니다.
Found row :
keyvalues={row1/personal:city/1418275612888/Put/vlen=5/mvcc=0,
row1/personal:name/1418035791555/Put/vlen=4/mvcc=0}