Apache pig 一个';外袋';和';内袋';用拉丁语?
手册/文档广泛地使用了“内袋”和“外袋”的语言(比如:),但我还不能清楚地指出区分这些术语的确切定义 e、 g.所有内在相互关联的:Apache pig 一个';外袋';和';内袋';用拉丁语?,apache-pig,Apache Pig,手册/文档广泛地使用了“内袋”和“外袋”的语言(比如:),但我还不能清楚地指出区分这些术语的确切定义 e、 g.所有内在相互关联的: 如果我给你一个袋子“foo”,你需要知道什么才能将foo标记为“内袋”还是“外袋” “任何包”不是最外层的包,那么是“内层包”吗 内部和外部的标签总是排他性的吗 在拉丁语中,所有的“包”都是“关系”,还是只有“最外层的包”是关系?(与内袋无关) 创建一个可讨论的示例: grunt> dump A; (1,2,3) (4,2,1) (8,3,4
- 如果我给你一个袋子“foo”,你需要知道什么才能将foo标记为“内袋”还是“外袋”
- “任何包”不是最外层的包,那么是“内层包”吗
- 内部和外部的标签总是排他性的吗李>
- 在拉丁语中,所有的“包”都是“关系”,还是只有“最外层的包”是关系?(与内袋无关)
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)})})})})
在这些袋子中——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)})
我们可以看到他们是W1
中名为a
的一个字段,这是一个包。这是一个内部包,因为包是关系中的一个字段
请记住,包只是无序的元组集,我们可以看到这是W1
的输出。现在,查看关系A
的输出:
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
Pig不保证这些元组的顺序(除非您顺序
或其他东西)。所以,如果你仔细想想,关系A
实际上只是一组无序的元组。这是一个外袋
您可以找到一些这样的例子。这很有帮助,谢谢。我想我现在明白了:不包含在其他包中的包是“外包”;如果它包含任何袋子,那么每个袋子都是“内袋”(而不是“外袋”)。