如何在hadoop中合并稀疏表?

zz2j4svz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(171)

我有许多csv文件,其中包含一列值:
文件1:

ID|V1
1111|101
4444|101

文件2:

ID|V2
2222|102
4444|102

文件3:

ID|V3
3333|103
4444|103

我想把这些结合起来得到:

ID|V1|V2|V3
1111|101||
2222||102|
3333|||103
4444|101|102|103

有许多(1亿)行,大约有100列/表。我一直在尝试用Pig,但我是一个初学者,正在努力。
对于两个文件,我可以:

s1 = load 'file1.psv' using PigStorage('|') as (ID,V1);
s2 = load 'file2.psv' using PigStorage('|') as (ID,V2);
cg = cogroup s1 by ID, s2 by ID
merged = foreach cg generate group, flatten((IsEmpty(s1) ? null : s1.V1)), flatten((IsEmpty(s2) ? null : s2.V2));

但是我想对任何文件都这样做,最多100个左右,而且我不认为我可以在没有内存耗尽的情况下组合这么多大的文件。因此,我宁愿从标题中获取列名,而不只是硬编码。换言之,这个2文件玩具的例子并不适用。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题