图片文件上传的服务器 存储
在hib里会自动进行打包,并且对每张图片的尺寸进行缩小和优化,对图片的质量会有一定的影响,不是很大。
要么是用于大数量图片的存储 要么利用Hadoop本身机制 的建立 索引,以便进行搜素。
现在做的项目就用到了 hip 和hadoop的搜索部分,业务要求上传一张照片,通过后台搜索返回最相似的自定义的几张图片。
这里记录简历索引需要用到的代码
public static void createIndex(){
String hostname = SysParameter.getParameter("hadoophost");
String username = SysParameter.getParameter("hadoopusername");
String password = SysParameter.getParameter("hadooppassword");
/*String hostname ="172.1.23.89";
String username ="hadoop";
String password = "hadoop";*/
//指明连接主机的IP地址
Connection conn = new Connection(hostname);
System.out.println("liunx "+username+" "+password);
Session ssh = null;
try {
//连接到主机
conn.connect();
//使用用户名和密码校验
boolean isconn = conn.authenticateWithPassword(username, password);
if(!isconn){
System.out.println("用户名称或者是密码不正确");
}else{
System.out.println("已经连接OK");
ssh = conn.openSession();
//使用多个命令用分号隔开
ssh.execCommand("cd /usr/hadoop/hadoop-2.6.0/usr/;hadoop jar BuildIndex.jar "+args[0]);
//只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
//将屏幕上的文字全部打印出来
InputStream is = new StreamGobbler(ssh.getStdout());
BufferedReader brs = new BufferedReader(new InputStreamReader(is));
while(true){
String line = brs.readLine();
if(line==null){
break;
}
System.out.println(line);
}
}
//连接的Session和Connection对象都需要关闭
ssh.close();
conn.close();
} catch (IOException e) {
System.out.println("建立索引出现问题。。。。。");
e.printStackTrace();
}
}
由于每次上传后hib地址都会变,名字在变,所以我们要手动传,已用来保证程序的自动建立最新的hib文件索引
所以改了下程序的源码 是 buildIndex.CLASS 的mian 方法里 修改readxml.get_hibpath 改成 args[0] 变成手动操作。
在ssh 的运行指令最后 增加 一个参数 为args【0】 由程序来传入最新的Hib对象路径。
给hib文件 建立索引 用于搜索 这个过程很慢,一般需要3-5分钟,所以建议做一个定时器,放到半夜进行操作。
本文详细介绍了如何利用Hadoop和Hib进行大数量图片的存储和索引创建,以实现快速搜索相似图片的功能。通过自定义代码实现索引构建,并在夜间执行以优化性能。
795

被折叠的 条评论
为什么被折叠?



