hbase存取图片
来源:互联网 发布:足不出户而知天下三分 编辑:程序博客网 时间:2024/04/30 06:05
package hbase.test;import java.io.IOException;import org.apache.commons.io.FileUtils;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.KeyValue;import org.apache.hadoop.hbase.MasterNotRunningException;import org.apache.hadoop.hbase.ZooKeeperConnectionException;import org.apache.hadoop.hbase.client.Delete;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.client.ResultScanner;import org.apache.hadoop.hbase.client.Scan;import org.apache.hadoop.hbase.util.Bytes;public class HbaseTest { static Configuration configuration = null; static { configuration = HBaseConfiguration.create(); } //存储图片 /** * @param tableName 表名 * @param rowkey 行号 * @param colFamily 列簇 * @param colName 列名 * @param bs 列值,此处为图片 * @param imgType * 图片类型,读取图片时使用,图片类型的列名指定为imageType,imgType这里指的是列名为imageType的列值 */ public static void storeImage(String tableName, String rowkey, String colFamily, String colName, byte[] bs, String imgType) throws IOException { HTable table = new HTable(configuration, tableName); java.util.List<Put> puts = new java.util.ArrayList<Put>(); //存二进制图片 Put put = new Put(Bytes.toBytes(rowkey)); put.add(Bytes.toBytes(colFamily), Bytes.toBytes(colName), bs); //存图片类型 Put putx = new Put(Bytes.toBytes(rowkey)); putx.add(Bytes.toBytes(colFamily), Bytes.toBytes("imageType"), Bytes.toBytes(imgType)); puts.add(put); puts.add(putx); //put.a //table.put(put); table.put(puts); table.close(); } //读取图片 public static void getImage(String tableName, String rowkey) throws IOException { HTable table = new HTable(configuration, tableName); Get get = new Get(Bytes.toBytes(rowkey)); Result result = table.get(get); for (KeyValue k : result.raw()) { String col = Bytes.toStringBinary(k.getQualifier()); System.out.println("===k:String===>>:" + col); if (col.equals("imgContent")) { byte[] bs = k.getValue(); FileUtils.writeByteArrayToFile(new java.io.File("/home/zcwangjb/document/hbase.jpg"), bs); } } table.close(); } //创建表并指定列簇 public static void createTable(String tableName, String cols[]) throws MasterNotRunningException, ZooKeeperConnectionException, IOException { HBaseAdmin baseAdmin = new HBaseAdmin(configuration); if (baseAdmin.tableExists(tableName)) { System.out.println("表【" + tableName + "】存在"); } else { HTableDescriptor tableDescriptor = new HTableDescriptor(tableName); for (String s : cols) { HColumnDescriptor columnDescriptor = new HColumnDescriptor(s); tableDescriptor.addFamily(columnDescriptor); } baseAdmin.createTable(tableDescriptor); baseAdmin.close(); } } //删除表 public static void deleteTable(String tableName) throws MasterNotRunningException, ZooKeeperConnectionException, IOException { HBaseAdmin admin = new HBaseAdmin(configuration); if (admin.tableExists(tableName)) { admin.disableTable(tableName); admin.deleteTable(tableName); } } //添加数据 /** * @param tableName 表名 * @param rowkey 行号 * @param colFamily 列簇 * @param column 列 * @param value 列值 */ public static void insertData(String tableName, String rowkey, String colFamily, String column, String value) throws IOException { HTable table = new HTable(configuration, tableName); Put put = new Put(Bytes.toBytes(rowkey)); put.add(Bytes.toBytes(colFamily), Bytes.toBytes(column), Bytes.toBytes(value)); table.put(put); table.close(); } //查询一条数据 public static void getOneByeRowkey(String tableName, String rowkey) throws IOException { HTable table = new HTable(configuration, tableName); Get get = new Get(Bytes.toBytes(rowkey)); Result result = table.get(get); for (KeyValue k : result.raw()) { System.out.println("行号:" + Bytes.toStringBinary(k.getRow())); System.out.println("时间戳:" + k.getTimestamp()); System.out.println("列簇:" + Bytes.toStringBinary(k.getFamily())); System.out.println("列:" + Bytes.toStringBinary(k.getQualifier())); System.out.println("值:" + Bytes.toString(k.getValue())); } table.close(); } //查询指定数据 public static void scanData(String tableName) throws IOException { HTable table = new HTable(configuration, tableName); Scan scan = new Scan(); ResultScanner rs = table.getScanner(scan); for (Result result : rs) { for (KeyValue k : result.raw()) { System.out.println("行号:" + Bytes.toStringBinary(k.getRow())); System.out.println("时间戳:" + k.getTimestamp()); System.out.println("列簇:" + Bytes.toStringBinary(k.getFamily())); System.out.println("列:" + Bytes.toStringBinary(k.getQualifier())); System.out.println("值:" + Bytes.toString(k.getValue())); } } table.close(); } //删除一条数据 @SuppressWarnings("empty-statement") public static void deleteByRow(String tableName, String rowkey) throws IOException { HTable table = new HTable(configuration, tableName); //删除一条数据 Delete delete = new Delete(Bytes.toBytes(rowkey)); table.delete(delete); //删除多条数据 String[] rowkeys = {}; java.util.List<Delete> list = new java.util.ArrayList<Delete>(); for (String rk : rowkeys) { Delete d = new Delete(Bytes.toBytes(rk)); list.add(d); } table.delete(list); // table.close(); } public static void main(String[] args) throws ZooKeeperConnectionException, IOException { String tableName = "mytest"; String cols[] = {"a", "b", "c"}; // createTable(tableName, cols); // insertData(tableName, "1", "a", "abc", "11111"); // getOneByeRowkey(tableName, "1"); //scanData(tableName); // deleteByRow(tableName, "1"); // scanData(tableName); //getImage(tableName, "1");// String imgType = ".jpg";// byte[] bs = null;// java.io.InputStream is = new java.io.FileInputStream(new File("/home/zcwangjb/document/solr.jpg"));// bs = IOUtils.toByteArray(is);// storeImage(tableName, "1", "a", "imgContent", bs, imgType); getImage(tableName, "1"); } }
0 0
- hbase存取图片
- hbase直接存取图片
- hbase 文件存取
- hbase存取照片
- c#存取图片
- 数据库存取图片
- Delphi存取图片,
- 数据库中存取图片
- 数据库存取图片
- hibernate存取图片实例
- hibernate存取图片示例
- C#数据库存取图片
- hibernate存取图片示例
- 图片的存取
- hibernate存取图片示例
- SQL Server存取图片
- Java+Access存取图片
- hibernate存取图片示例
- mysql存取图片
- 大端模式与小端模式
- 第三周作业 归并排序(接)
- 读取properties属性文件——国际化
- Uncrustify - 代码强制规范
- hbase存取图片
- 1 Swift语法特性
- LeetCode-Unique Paths
- curl多线程注意事项
- automake连载--Linux下使用automake入门
- IO多路复用之epoll总结
- Tomcat下部署多个项目
- 刷票大战(三)——C#自动POST数据
- 1001