資源簡介
用MapReduce實現KMeans算法,數據的讀寫都是在HDFS上進行的,在偽分布下運行沒有問題。文檔中有具體說明。

代碼片段和文件信息
import?java.io.ByteArrayInputStream;
import?java.io.ByteArrayOutputStream;
import?java.io.IOException;
import?java.io.OutputStream;
import?java.net.URI;
import?org.apache.hadoop.conf.Configuration;
import?org.apache.hadoop.fs.FSDataInputStream;
import?org.apache.hadoop.fs.FileSystem;
import?org.apache.hadoop.fs.Path;
import?org.apache.hadoop.io.IOUtils;
public?class?CenterInitial?{
public?void?run(String[]?args)?throws?IOException
{
String[]?clist;
int?k?=?10;
String?string?=?““;
String?inpath?=?args[0]+“/cluster“;??//cluster
String?outpath?=?args[1]+“/center“;??//center
Configuration?conf1?=?new?Configuration();?//讀取hadoop文件系統的配置
conf1.set(“hadoop.job.ugi“?“hadoophadoop“);?
FileSystem?fs?=?FileSystem.get(URI.create(inpath)conf1);?//FileSystem是用戶操作HDFS的核心類,它獲得URI對應的HDFS文件系統?
FSDataInputStream?in?=?null;?
ByteArrayOutputStream?out?=?new?ByteArrayOutputStream();
try{?
?????????
in?=?fs.open(?new?Path(inpath)?);?
IOUtils.copyBytes(inout50false);??//用Hadoop的IOUtils工具方法來讓這個文件的指定字節復制到標準輸出流上?
clist?=?out.toString().split(“?“);
}?finally?{?
IOUtils.closeStream(in);
}
FileSystem?filesystem?=?FileSystem.get(URI.create(outpath)?conf1);?
for(int?i=0;i {
int?j=(int)?(Math.random()*100)?%?clist.length;
if(string.contains(clist[j]))??//?choose?the?same?one
{
k++;
continue;
}
string?=?string?+?clist[j].replace(“?“?““)?+?“?“;
}
OutputStream?out2?=?filesystem.create(new?Path(outpath)?);?
IOUtils.copyBytes(new?ByteArrayInputStream(string.getBytes())?out2?4096true);?//write?string
System.out.println(string);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2533??2012-06-19?08:31??KMeans\.classpath
?????文件????????417??2012-06-19?08:31??KMeans\.project
?????文件???????2972??2012-06-19?08:38??KMeans\bin\CenterInitial.class
?????文件???????4558??2012-06-19?10:09??KMeans\bin\KMapper.class
?????文件???????2508??2012-06-19?10:34??KMeans\bin\KMeans.class
?????文件???????3445??2012-06-19?10:06??KMeans\bin\KReducer.class
?????文件???????3306??2012-06-19?10:31??KMeans\bin\NewCenter.class
?????文件???????1741??2012-06-19?08:38??KMeans\src\CenterInitial.java
?????文件???????2278??2012-06-19?10:09??KMeans\src\KMapper.java
?????文件???????1385??2012-06-19?10:34??KMeans\src\KMeans.java
?????文件???????1051??2012-06-19?10:06??KMeans\src\KReducer.java
?????文件???????1767??2012-06-19?10:31??KMeans\src\NewCenter.java
?????文件????????371??2012-06-20?21:49??KMeans\說明.txt
????..AD...?????????0??2012-06-19?10:08??KMeans\bin
????..AD...?????????0??2012-06-20?21:49??KMeans\src
????..AD...?????????0??2012-06-20?21:49??KMeans
-----------?---------??----------?-----??----
????????????????28332????????????????????16
評論
共有 條評論