package com.yihu.ehr.hbase;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
import java.util.*;
import java.util.stream.Collectors;
/**
* 将HBase中的行,列族,列捆绑成一束。并一次性生成所需要的Get, Put操作。
*
* 仅支持单表操作。
*
* 虽然支持多种HBase操作,但请注意,一次只能用于一种操作,如:Get,Put,Delete不能混用,
* 否则将出现难以预料的后果。
*
* @author Sand
* @created 2016.04.27 14:38
*/
public class TableBundle {
Map rows = new HashMap<>();
public void addRows(String... rowkeys) {
for (String rowkey : rowkeys) {
rows.put(rowkey, null);
}
}
public void addFamily(String rowkey, Object family) {
Row row = getRow(rowkey);
row.addFamily(family.toString());
}
public void addColumns(String rowkey, Object family, String[] columns) {
Row row = getRow(rowkey);
row.addColumns(family.toString(), columns);
}
public void addValues(String rowkey, Object family, Map values) {
Row row = getRow(rowkey);
row.addValues(family.toString(), values);
}
public void clear() {
rows.clear();
}
public List getOperations() {
List gets = new ArrayList<>(rows.size());
for (String rowkey : rows.keySet()) {
Get get = new Get(Bytes.toBytes(rowkey));
Row row = rows.get(rowkey);
if (row != null) {
for (String family : row.getFamilies()) {
Set