PIG 使用不同的负载变量生成数据
Posted
技术标签:
【中文标题】PIG 使用不同的负载变量生成数据【英文标题】:PIG generate data using different load variables 【发布时间】:2015-09-10 13:37:11 【问题描述】:我有 2 个文件,我想使用不同的 diff 列生成数据 文件。我想做这样的事情:-
这是我的示例问题:-
我有 2 个文件 abc.txt(col1,col2) 和 xyz.txt(col3,col4) 两个文件中的记录数不同,例如 abc.txt 有 1000 条记录,而 xyz.txt 有 100 条记录。 我想将输出存储在一个文件中,这样,我从 abc.txt 和 col3 从 xyz.txt 获得 col1,col2 (因为我们在 xyz 中的记录比 abc 少,我希望我的 col3 值随机或以相同的顺序重复与输入文件一样,一切正常)
Input
abc.txt xyz.txt
col1 col2 col3 col4
1 A 4 X
2 B 5 Y
3 C 6 Z
4 D
5 D
6 F
7 A
A = LOAD '/user/abc.txt' Using PigStorage('|');
B = LOAD '/user/xyz.txt' Using PigStorage('|');
C = FOREACH A GENERATE A.$0,A.$1,B.$0;
Output
col1 col2 col3
1 A 4
2 B 5
3 C 6
4 D 5
5 D 4
6 F 4
7 A 6
是否可以使用 PIG 做到这一点?
【问题讨论】:
【参考方案1】:GENERATE
不是 Pig 中的运算符。所以你不能用它来生成数据。 Pig 提供FOREACH
用于迭代关系。它仅适用于一种关系。在我看来,您似乎可以生成您指定的数据,直到您想对数据执行某种JOIN
。
【讨论】:
在我的帖子中生成之前,我不知何故错过了 FOREACH。我的主要问题是我可以从 2 个不同的文件中获取列来生成数据(例如 A.$0,B.$0;)。你说只有通过加入才有可能。感谢您的回复。 不确定解决方案部分。仍在网上搜索相同的内容。任何帮助将不胜感激。 能否提供样例输入输出?如果可能我会尝试。 使用示例输入和输出编辑了我的问题。以上是关于PIG 使用不同的负载变量生成数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Ruby 中与负载测试一起使用的随机数据生成器 [重复]