手册/文档广泛使用'inner bag'和'outer bag'的语言(例如:http://pig.apache.org/docs/r0.11.1/basic.html ),但我还没能明确指出分离条款的确切定义.
例如,所有内在相互关联的:
创建一个可讨论的例子:
grunt> dump A;
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
grunt> W1 = GROUP A ALL;
grunt> W2 = GROUP W1 ALL;
grunt> W3 = GROUP W2 ALL;
grunt> W4 = GROUP W3 ALL;
grunt> describe W4;
W4: {group: chararray,W3: {(group: chararray,W2: {(group: chararray,W1: {(group: chararray,A: {(f1: int,f2: int,f3: int)})})})}}
grunt> illustrate W4;
(1,2,3)
---------------------------------------------------
| A | f1:int | f2:int | f3:int |
---------------------------------------------------
| | 1 | 2 | 3 |
| | 8 | 3 | 4 |
---------------------------------------------------
------------------------------------------------------------------------------------------------
| W1 | group:chararray | A:bag{:tuple(f1:int,f2:int,f3:int)} |
------------------------------------------------------------------------------------------------
| | all | {(1, 2, 3), (8, 3, 4)} |
------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------
| W2 | group:chararray | W1:bag{:tuple(group:chararray,A:bag{:tuple(f1:int,f2:int,f3:int)})} |
-----------------------------------------------------------------------------------------------------------------------------------------------
| | all | {(all, {(1, 2, 3), (8, 3, 4)})} |
-----------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| W3 | group:chararray | W2:bag{:tuple(group:chararray,W1:bag{:tuple(group:chararray,A:bag{:tuple(f1:int,f2:int,f3:int)})})} |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| | all | {(all, {(all, {(1, 2, 3), (8, 3, 4)})})} |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| W4 | group:chararray | W3:bag{:tuple(group:chararray,W2:bag{:tuple(group:chararray,W1:bag{:tuple(group:chararray,A:bag{:tuple(f1:int,f2:int,f3:int)})})})} |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| | all | {(all, {(all, {(all, {(1, 2, 3), (8, 3, 4)})})})} |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
grunt> dump W4;
(all,{(all,{(all,{(all,{(1,2,3),(4,2,1),(8,3,4),(4,3,3)})})})})
Run Code Online (Sandbox Code Playgroud)
袋子里面 - W1,W2,W3,W4--哪个是内层,哪个是外层?
外袋其实是有关系的A。这有点奇怪,但是一旦您知道什么是内袋,就会清楚了。我们来看看W1,因为嵌套袋不会改变答案。
架构和输出W1:
W1: {group:chararray, A:bag{:tuple(f1:int,f2:int,f3:int)}}
(all,{(1, 2, 3), (8, 3, 4)})
Run Code Online (Sandbox Code Playgroud)
W1我们可以看到他们是named中的一个字段A中的一个字段,它是一个包。这是一个内部包,因为该包是关系中的一个字段。
请记住,bags 只是无序的元组集合,我们可以看到这是 的输出W1。现在,看看关系的输出A:
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
Run Code Online (Sandbox Code Playgroud)
Pig 不保证这些元组的顺序(除非你ORDER什么的)。所以,如果你仔细想想,关系A实际上只是一组无序的元组。这是一个外袋。
您可以在此处找到一些相关示例。
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |