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 使用不同的负载变量生成数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jmeter 生成负载测试报告?

在 PIG 中加载 CSV 文件

在 Ruby 中与负载测试一起使用的随机数据生成器 [重复]

使用免费负载生成器swingbench对oracle数据库进行压力测试(测试Oracle的功能或评估性能)

JMeter负载测试的变量输入?

生成 JWT 表单头和有效负载