我试图在地图上运行weka分类器减少并加载甚至200mb的整个arff文件导致堆空间错误,所以我想将arff文件拆分成块,但问题是它必须维护块信息,即每个块中的arff属性信息,以便在每个映射器中运行分类器。这是我试图分割数据但不能提高效率的代码,
List splits = new ArrayList ();
for(FileStatus file:listStatus(job)){
Path path = file.getPath();
FileSystem fs = path.getFileSystem(job.getConfiguration());
//此文件中的字节数
long length = file.getLen();
BlockLocation [] blkLocations = fs.getFileBlockLocations(file,0,length);
//确保这实际上是一个有效的文件
if(length!= 0){
//设置要进行的拆分数。注意:该值可以更改为任何值
int count = job.getConfiguration()。getInt(“Run-num.splits”,1);
for(int t = 0; t
答案 0 :(得分:0)
你先试过这个吗?
在mapred-site.xml中,添加以下属性:
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
</property>
// MR作业的内存分配