圖片文件上傳的服務器 存儲
在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分鐘,所以建議做一個定時器,放到半夜進行操作。