鉴于 GROUP 操作的结果,我如何将每个嵌套包存储在以组命名的文件夹中?
Given the resoult of a GROUP operation how can I store each nested-bag in a folder named after the group?
我有一个关系 D:
grunt> DESCRIBE D;
D: {i: int,l: chararray}
应用组:
grunt> G = group D by i;
grunt> illustrate G;
-------------------------------------
| D | i:int | l:chararray |
-------------------------------------
| | 1 | B |
| | 1 | A |
| | 2 | A |
-------------------------------------
-----------------------------------------------------------------------
| G | group:int | D:bag{:tuple(i:int,l:chararray)} |
-----------------------------------------------------------------------
| | 1 | {(1, B), (1, A)} |
| | 2 | {(2, A)} |
-----------------------------------------------------------------------
如何将每个嵌套包 G.D
存储在一个名为相应组的文件中? IE。 /ouput/1
、/output/2
我知道我不能在 foreach
块中使用 store
操作。事实上,以下是行不通的:
grunt> foreach G { store D into '/output/' + ((chararray) group) }
MultiStorage()
选项适合您。它将在 piggybank jar.
中提供。您需要从此 link http://www.java2s.com/Code/Jar/p/Downloadpiggybankjar.htm 下载并将其设置在您的类路径中。
示例:
输入
1,A
1,B
2,A
PigScript:
REGISTER '/tmp/piggybank.jar';
A = LOAD 'input' USING PigStorage(',') AS (i:int,l:chararray);
B = GROUP A BY i;
STORE B INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0');
现在 output
文件夹包含 2 个名为 1 和 2 的目录,其中相应的组值将存储在此文件夹中。
输出:
output$ ls
1 2 _SUCCESS
参考:
https://pig.apache.org/docs/r0.10.0/api/org/apache/pig/piggybank/storage/MultiStorage.html
我有一个关系 D:
grunt> DESCRIBE D;
D: {i: int,l: chararray}
应用组:
grunt> G = group D by i;
grunt> illustrate G;
-------------------------------------
| D | i:int | l:chararray |
-------------------------------------
| | 1 | B |
| | 1 | A |
| | 2 | A |
-------------------------------------
-----------------------------------------------------------------------
| G | group:int | D:bag{:tuple(i:int,l:chararray)} |
-----------------------------------------------------------------------
| | 1 | {(1, B), (1, A)} |
| | 2 | {(2, A)} |
-----------------------------------------------------------------------
如何将每个嵌套包 G.D
存储在一个名为相应组的文件中? IE。 /ouput/1
、/output/2
我知道我不能在 foreach
块中使用 store
操作。事实上,以下是行不通的:
grunt> foreach G { store D into '/output/' + ((chararray) group) }
MultiStorage()
选项适合您。它将在 piggybank jar.
中提供。您需要从此 link http://www.java2s.com/Code/Jar/p/Downloadpiggybankjar.htm 下载并将其设置在您的类路径中。
示例:
输入
1,A
1,B
2,A
PigScript:
REGISTER '/tmp/piggybank.jar';
A = LOAD 'input' USING PigStorage(',') AS (i:int,l:chararray);
B = GROUP A BY i;
STORE B INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0');
现在 output
文件夹包含 2 个名为 1 和 2 的目录,其中相应的组值将存储在此文件夹中。
输出:
output$ ls
1 2 _SUCCESS
参考:
https://pig.apache.org/docs/r0.10.0/api/org/apache/pig/piggybank/storage/MultiStorage.html