栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HBaseAPI

HBaseAPI

1. 环境准备

新建项目后在pom.xml中添加依赖:

    org.apache.hbase

    hbase-server

    1.3.1

    org.apache.hbase

    hbase-client

    1.3.1

        jdk.tools

        jdk.tools

        1.8

        system

        ${JAVA_HOME}/lib/tools.jar

2. 获取Configuration对象和HbaseaAdmin
private static ThreadLocal adminTLocal = new ThreadLocal();
private static ThreadLocal connectTLocal = new ThreadLocal();

    
	public static Connection getConnect() {
		Configuration conf = HbaseConfiguration.create();
		
		try {
			Connection connect = ConnectionFactory.createConnection(conf);
			//将connect放入connectTLocal
			connectTLocal.set(connect);
			System.out.println("链接"+connect);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return connectTLocal.get();
		
	}


    
	public static Admin getAdmin() {				
		Admin admin = null;
		getConnect();
		try {
			admin = connectTLocal.get().getAdmin();
			System.out.println("Admin"+admin);
			//将admin放入AdminTlocal
			adminTLocal.set(admin);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return adminTLocal.get();
	}
3. 判断表是否存在
	public static boolean isTableExits(String tableName) throws Exception {
		
		boolean result = adminTLocal.get().tableExists(TableName.valueOf(tableName));
		return result;
	}

4. 创建表
	
	public static void createTable(String tableName , String columnFamily ,String... columnFamilys) throws Exception {
		
			HTableDescriptor hTableDes = new HTableDescriptor(TableName.valueOf(tableName));
			HColumnDescriptor hColumnDes = new HColumnDescriptor(columnFamily);
			hTableDes.addFamily(hColumnDes);
			
			for (String singleColumnFamily : columnFamilys) {
				HColumnDescriptor singleHColumnDes = new HColumnDescriptor(singleColumnFamily);
				hTableDes.addFamily(singleHColumnDes);
				
			}
			
			adminTLocal.get().createTable(hTableDes);
			System.out.println("表"+tableName+"创建成功");
		
	}
5. 添加/修改一条数据
	public static void putDate(String tableName , String rowkey , String columnFamily , String column , String value) throws IOException {
		
		Table table = getConnect().getTable(TableName.valueOf(tableName));
		
		Put put = new Put(Bytes.toBytes(rowkey));
		
		put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
		
		table.put(put);
		
	}
6. 删除一条数据的一个版本
	public static void deleteData(String tableName , String rowkey , String columnFamily , String column) throws IOException {
		
		Table table = getConnect().getTable(TableName.valueOf(tableName));
		
		Delete delete = new Delete(Bytes.toBytes(rowkey));
		
		delete.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column));
		
		table.delete(delete);
		
	}
7. 删除一条数据的列族
    
	public static void deleteDatas(String tableName , String rowkey , String columnFamily , String column) throws IOException {
		
		Table table = getConnect().getTable(TableName.valueOf(tableName));
		
		Delete delete = new Delete(Bytes.toBytes(rowkey));
		
		table.delete(delete);
		
		delete.addColumns(Bytes.toBytes(columnFamily), Bytes.toBytes(column));
		
	}
	
8. 删除一个rowkey
    
	public static void deleteDatas(String tableName , String rowkey ) throws IOException {
		
		Table table = getConnect().getTable(TableName.valueOf(tableName));
		
		Delete delete = new Delete(Bytes.toBytes(rowkey));
		
		table.delete(delete);
		
	}
9. 删除表
    
	public static void deleteTable(String tableName) throws IOException {
		
		disableTable(tableName);
		Admin admin = adminTLocal.get();	
		admin.disableTable(TableName.valueOf(tableName));
		admin.deleteTable(TableName.valueOf(tableName));	
	
	}
10. 停止表
    
	public static void disableTable(String tableName) throws IOException {
		
		Admin admin = adminTLocal.get();	
		
		admin.disableTable(TableName.valueOf(tableName));
		
	}
11. 清空表
    
	public static void turnCat(String tableName , boolean preserved ) throws IOException {
		
		Admin admin = adminTLocal.get();	
		admin.disableTable(TableName.valueOf(tableName));
		admin.truncateTable(TableName.valueOf(tableName), preserved);
		
	}
12.  扫描全表
    
	public static void scanTable(String tableName) throws IOException {
		
		Table table = getConnect().getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		ResultScanner scanner = table.getScanner(scan);
		for (Result result : scanner) {
			
			Cell[] cells = result.rawCells();
			
			for (Cell cell : cells) {
				
				String rowkey = Bytes.toString(CellUtil.cloneRow(cell)); 
				String family = Bytes.toString(CellUtil.cloneFamily(cell));
				String column = Bytes.toString(CellUtil.cloneQualifier(cell));
				String value = Bytes.toString(CellUtil.clonevalue(cell)); 
				
				
				System.out.print("rowkey:"+rowkey);
				System.out.print(",family:"+family);
				System.out.print(",column:"+column);
				System.out.print(",value:"+value);
				System.out.println();
				
			}
		}
		
	}
13. 查询一条表数据
    
	public static void getRowData(String tableName , String rowkey) throws IOException {
		
		Table table = getConnect().getTable(TableName.valueOf(tableName));
		
		Get get = new Get(Bytes.toBytes(rowkey));
		
		Result result = table.get(get);
		
		Cell[] cells = result.rawCells();
		
		for (Cell cell : cells) {
			String family = Bytes.toString(CellUtil.cloneFamily(cell));
			String column = Bytes.toString(CellUtil.cloneQualifier(cell));
			String value = Bytes.toString(CellUtil.clonevalue(cell)); 
			
			
			System.out.print("rowkey:"+rowkey);
			System.out.print(",family:"+family);
			System.out.print(",column:"+column);
			System.out.print(",value:"+value);
			System.out.println();
			
		}
	}
	
14. 创建命名空间
    
	public static boolean createNamespace(String namespace)  {
		
		//判断命名空间是否存在
		if(!(hasNamespace(namespace))) {
			
			NamespaceDescriptor namespaceDes = NamespaceDescriptor.create(namespace).build();
			
			try {
				adminTLocal.get().createNamespace(namespaceDes);
				return true;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return false;
			}
		}
		System.out.println("命名空间在家里"+namespace+"以存在");
		return false;
	}
15. 删除命名空间
    
	public static void deleteNamespace(String namespace) throws IOException {
		
		getAdmin().deleteNamespace(namespace);
		System.out.println("删除成功");
		
	}
	
16. 判断命名空间是否存在
    
	public static boolean hasNamespace(String namespace) {
		try {
			adminTLocal.get().getNamespaceDescriptor(namespace);
			System.out.println("命名空间在"+namespace+"存在");
			return true;
		} catch (NamespaceNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("命名空间"+namespace+"不存在");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return false;
		
	}
17. 关闭资源
    
	public static void close() {
		
		if(getAdmin()!=null){
			
			try {
				adminTLocal.get().close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			adminTLocal.remove();
			connectTLocal.remove();
			
		}
		
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号