package com.esri; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Put; import java.io.ByteArrayOutputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.IOException; /** * mvn exec:java -q -Dexec.mainClass=com.esri.CreatePutLUT -Dexec.args="1000" */ public final class CreatePutLUT { public static void main(final String[] args) throws IOException { final int count = args.length == 0 ? 1000000 : Integer.parseInt(args[0]); final Configuration configuration = HBaseConfiguration.create(); createLUT(configuration); putLUT(configuration, count); } private static void putLUT( final Configuration configuration, final int count ) throws IOException { final HTableInterface table = new HTable(configuration, Const.LUT); try { final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(128); final DataOutput dataOutput = new DataOutputStream(byteArrayOutputStream); for (int c = 0; c < count; c++) { final double lat = -90.0 + 180.0 * Math.random(); final double lon = -180.0 + 360.0 * Math.random(); byteArrayOutputStream.reset(); dataOutput.writeLong(Quad.encode(lon, lat)); dataOutput.writeDouble(lon); dataOutput.writeDouble(lat); dataOutput.writeInt(c); // To make it "really" unique final Put put = new Put(byteArrayOutputStream.toByteArray()); put.add(Const.ATTR, Const.ID, Integer.toString(c).getBytes()); table.put(put); } } finally { table.close(); } } private static void createLUT(final Configuration configuration) throws IOException { final HBaseAdmin admin = new HBaseAdmin(configuration); try { if (admin.tableExists(Const.LUT)) { admin.disableTable(Const.LUT); admin.deleteTable(Const.LUT); } final HTableDescriptor tableDescriptor = new HTableDescriptor(Const.LUT); final HColumnDescriptor columnDescriptor = new HColumnDescriptor(Const.ATTR); columnDescriptor.setMaxVersions(1); tableDescriptor.addFamily(columnDescriptor); admin.createTable(tableDescriptor); } finally { admin.close(); } } }