使用hadoop从列表到矩阵

66bbxpm5  于 2021-06-25  发布在  Hadoop
关注(0)|答案(1)|浏览(428)

我有一个列表(在制表符分隔的.txt文件中),如下所示:

  1. row col value
  2. 1 1 3.2
  3. 10 2 5.3
  4. 25 3 2.2
  5. 30 1 5.3

等。
我想把它变成一个稀疏矩阵,比如:

  1. 1 2 3
  2. 1 3.2
  3. 10 5.3
  4. 25 2.2
  5. 30 5.3

然后填上零。
使用hadoop最简单的方法是什么(我需要使用hadoop,因为矩阵的大小大约是3tb……)

g9icjywg

g9icjywg1#

你可以用Hive或Pig。以下是使用pig的示例:

  1. A = load 'input.txt' USING PigStorage('\t') AS (row:long, col:int, value:float);
  2. B = foreach a generate SOMEUDF(A);
  3. store B into 'output.txt';

然后您只需要定义一个自定义项:

  1. public class SOMEUDF extends EvalFunc <Tuple>
  2. {
  3. public Tuple exec(Tuple input) throws IOException {
  4. if (input == null || input.size() == 0)
  5. return null;
  6. try{
  7. // Generate the matrix line here and return.
  8. }catch(Exception e){
  9. throw WrappedIOException.wrap("Caught exception processing input row ", e);
  10. }
  11. }
  12. }
展开查看全部

相关问题