import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by similarface on 16/8/22. * 校驗指定數據是否存在 * */ public class CheckExistSpecificData { public static void main(String args[]) throws IOException{ Configuration configuration = HBaseConfiguration.create(); Connection connection = ConnectionFactory.createConnection(configuration); //建立表的連接 Table table = connection.getTable(TableName.valueOf("testtable")); // List<Put> puts = new ArrayList<Put>(); // Put put1 = new Put(Bytes.toBytes("10086")); put1.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1"), Bytes.toBytes("中國移動")); puts.add(put1); Put put2 = new Put(Bytes.toBytes("10010")); put2.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1"), Bytes.toBytes("中國聯通")); puts.add(put2); Put put3 = new Put(Bytes.toBytes("10010")); put3.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual2"), Bytes.toBytes("中國聯通客服")); puts.add(put3); //插入兩行數據 table.put(puts); Get get1 = new Get(Bytes.toBytes("10010")); get1.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1")); //Only check for existence of data, but do not return any of it. //校驗數據是否存在但是不返回任何數據 ==> Get 1 Exists: true get1.setCheckExistenceOnly(true); //檢查存在的第一個數據。==>Get 1 Size: 0 Result result1 = table.get(get1); //這個地方val並沒有值 ==>Get 1 Value: null byte[] val = result1.getValue(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1")); System.out.println("Get 1 Exists: " + result1.getExists()); System.out.println("Get 1 Size: " + result1.size()); System.out.println("Get 1 Value: " + Bytes.toString(val)); //獲取行鍵 Get get2 = new Get(Bytes.toBytes("10010")); //獲取列族 get2.addFamily(Bytes.toBytes("colfam1")); //設置校驗是否存在 ==>Get 2 Exists: true get2.setCheckExistenceOnly(true); //獲取數據集 ==>Get 2 Size: 0 Result result2 = table.get(get2); System.out.println("Get 2 Exists: " + result2.getExists()); System.out.println("Get 2 Size: " + result2.size()); //獲取行鍵 Get get3 = new Get(Bytes.toBytes("10010")); //獲取列族 但是錯誤的列限定符 get3.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual9999")); //校驗是否存在 ==>Get 3 Exists: false get3.setCheckExistenceOnly(true); //Get 3 Size: 0 Result result3 = table.get(get3); System.out.println("Get 3 Exists: " + result3.getExists()); System.out.println("Get 3 Size: " + result3.size()); //獲取行鍵100010 Get get4 = new Get(Bytes.toBytes("10010")); //獲取正確的列族 錯誤的列限定符 get4.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual9999")); //獲取正確的列族 正確的列限定符 ==> Get 4 Exists: true get4.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1")); get4.setCheckExistenceOnly(true); //Get 4 Size: 0 Result result4 = table.get(get4); System.out.println("Get 4 Exists: " + result4.getExists()); System.out.println("Get 4 Size: " + result4.size()); } } /** result: Get 1 Exists: true Get 1 Size: 0 Get 1 Value: null Get 2 Exists: true Get 2 Size: 0 Get 3 Exists: false Get 3 Size: 0 Get 4 Exists: true Get 4 Size: 0 * */