我正在尝试使用Hadoop MapReduce找到矩阵的X转置X。输入文件为csv格式,row_id, col_id, value
。row_id和column_id不需要排序。问题是使用mapper发出什么。我不想存储整个矩阵。我使用MapWritable
发出形式为
上下文。Emit (col_id, mapw)
,其中mapw是map(row_id, value),因为矩阵的乘法使用列aij*bjk
我可以在MapWritable中输出两个以上的值吗?我不知道该怎么做。如果我有两个以上的值,那么我可以同时发射矩阵和它的转置,并且有一个字段用于识别它是矩阵还是转置(例如mapw(M, I, val))
如果我不能这样做,有没有其他的方法不存储矩阵,有矩阵和它的转置在减速器中的列j的所有值?? ?
为什么不直接发出一个(col_id,Text)呢?文本格式为:M/M' +分隔符+ row_id +分隔符+ value。