HBase中Java操作数据库增删改查——增加数据

已经创建了一个学生宿舍管理系统

数据表表名:student_info

列族1:students

列族2:dormitorys

列族3:staff_members

添加方法:

package myhbase;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
public class PutData {
	public static void main(String[] args) throws MasterNotRunningException,
			ZooKeeperConnectionException, IOException {
		String tableName = "student_info";
		String columnFamily1 = "students";
		String columnFamily2 = "dormitorys";
		String columnFamily3 = "staff_members";
		put(tableName, "001", columnFamily1, "student_id", "164804098");
		put(tableName, "001", columnFamily1, "student_name", "tingtingrugai");
		put(tableName, "001", columnFamily1, "gender", "male");
		put(tableName, "001", columnFamily1, "tel", "123456789");
		put(tableName, "001", columnFamily2, "hostel_No.", "115");
		put(tableName, "001", columnFamily2, "bed", "3");
		put(tableName, "001", columnFamily3, "staff_nameA", "zhangsan");
		put(tableName, "001", columnFamily3, "staff_ageA", "40");
		put(tableName, "001", columnFamily3, "staff_genderA", "male");

	}

	public static Configuration getConfiguration() {
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
		conf.set("hbase.zookeeper.quorum", "localhost");
		return conf;
	}
	public static void put(String tableName, String row, String columnFamily,
			String column, String data) throws IOException {
		HTable table = new HTable(getConfiguration(), tableName);
		Put put = new Put(Bytes.toBytes(row));
		put.add(Bytes.toBytes(columnFamily),
				Bytes.toBytes(column),
				Bytes.toBytes(data));
		table.put(put);
		System.err.println("SUCCESS");
	}
}

 

### Hadoop中实现图片数据增删改查功能 在Hadoop生态系统中,尤其是针对分布式文件系统(HDFS),可以利用其特性来设计一套适合图片管理的功能模块。以下是关于如何通过Hadoop及其组件实现图片数据增删改查操作的具体方法。 #### 图片存储方式的选择 由于HDFS的设计初衷是为了高效处理大文件,在存储大量小文件时性能较差。因此,对于图片这种通常较小的数据对象,推荐采用以下两种策略之一: 1. **MapFile**:适用于批量读取场景下的小文件集合存储。 2. **HBase**:作为NoSQL数据库,能够很好地支持随机访问和频繁更新的小文件存储需求[^2]。 #### 增加图片 当向Hadoop集群新增一张图片时,需考虑图片尺寸并决定合适的存储位置及形式。如果图片较大,则直接上传至HDFS;若是小型图像则先暂存于本地磁盘形成缓冲区待达到一定数量后再统一迁移至目标介质。具体流程如下所示: ```java Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); // 将图片写入临时目录或者最终路径 Path dstFilePath = new Path("/path/to/image.jpg"); FSDataOutputStream outStream = fs.create(dstFilePath, true); outStream.write(imageBytes); // imageBytes 是实际二进制字节数组示的图片内容 outStream.close(); fs.close(); ``` 此过程还包括设置相应的元信息标记以便后续检索使用[^2]。 #### 删除图片 要从HDFS移除某张特定图片,可通过标准API调用来完成这一动作。需要注意的是,一旦执行删除命令后不可恢复,请谨慎对待此类请求。 ```java boolean isDeleted = fs.delete(new Path("/path/to/delete"), false); if (!isDeleted){ System.out.println("Failed to delete file."); } ``` 另外,在基于HBase方案下,“逻辑删除”的概念被引入进来——即并不真正意义上销毁记录而是改变其状态字段值为`Deleted`,从而减少物理层面的操作频率提升整体效能现[^3]。 #### 修改图片 修改已存在的图片同样遵循类似的思路。如果是替换整个资源体的话可以直接按照前述“添加新条目”部分描述的方式重命名源地址为目标名称即可达成目的;而局部调整像素点之类的细粒度变更更适合借助外部工具先行加工完毕再回传覆盖原始副本。 至于依靠HBase来进行此项工作的场合里头,鉴于它本身具备多版本控制机制的缘故,所以单纯追加最新版次便足以满足业务诉求无需额外顾虑历史痕迹留存事宜[^3]。 #### 查询图片 最后谈及查找指定条件匹配项的过程方面,无论是依赖纯文本索引还是结合其他高级技术手段诸如Lucene/Solr之类全文搜索引擎辅助加速定位速度均属可行之选。当然前提是要事先规划好关键字提取规则以及分类体系架构等方面的工作基础之上才行得通顺无阻。 ```java RemoteIterator<LocatedFileStatus> filesListItr = fs.listFiles(new Path("/images/"), true); while (filesListItr.hasNext()) { LocatedFileStatus imgFileInfo = filesListItr.next(); String fileName = imgFileInfo.getPath().getName(); if(fileName.contains(searchKeyword)){ System.out.printf("Found matching picture %s\n",fileName ); } } ``` 以上便是围绕着Hadoop平台开展有关多媒体素材维护作业的一些常见做法概述[^1]^[]^。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值