import com.hopechart.dataquery.Decoder;
import com.hopechart.dataquery.RowKeyRuler;
import com.hopechart.type.TGPSV2;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HConstants;
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;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Demo {
public static void main(String[] args) throws Exception {
Configuration config = HBaseConfiguration.create();
config.set("hbase.client.ipc.pool.size", "3");
//config.set("hbase.zookeeper.quorum", "mine10"); //服务地址 zk
//config.set("hbase.zookeeper.property.clientPort", "2181"); //端口号
config.setLong(HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY, 120000); //设置连接时长
String recordDate ="20190205";
String sDt = recordDate+" 00:00:00";
String eDt = recordDate+" 23:59:59";
SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date dt1 = sdf.parse(sDt);
Date dt2 = sdf.parse(eDt);
long lTime = dt1.getTime() / 1000;
long bTime = dt2.getTime() / 1000;
HTable ht = new HTable(config, "t_gps_sq_"+recordDate);
//扫描表
List<Long> list = new ArrayList();
list.add(1708040960L);
list.add(1710050744L);
Scan scan = new Scan();
for (long v:list){
long mdataId =v;
byte[] startRowKey = RowKeyRuler.getRowKey(mdataId, lTime);
byte[] endRowKey = RowKeyRuler.getRowKey(mdataId, bTime);
scan.setStartRow(startRowKey);
scan.setStopRow(endRowKey);
scan.setBatch(10);
ResultScanner rs = ht.getScanner(scan);
for(Result result : rs) {
for (Cell cell : result.rawCells()) {
byte[] cloneRow = CellUtil.cloneRow(cell);
long dataid = Decoder.byte4ToLongBig(cloneRow, 2);
byte[] cloneValue = CellUtil.cloneValue(cell);
TGPSV2 decode = (TGPSV2) Decoder.decode(1, cloneRow, cloneValue, 0);
long dataTime = decode.getDataTime();
System.out.println(dataid + " " + dataTime);
}
}
}
ht.close();
}
}