gpt4 book ai didi

apache-pig - pigLatin 中的 'outer bag' 和 'inner bag' 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 11:17:32 28 4
gpt4 key购买 nike

手册/文档广泛使用了“内袋”和“外袋”的语言(例如: http://pig.apache.org/docs/r0.11.1/basic.html ),但我无法清楚地确定分隔这些术语的精确定义。

例如所有内在相关的:

  • 如果我给你一个袋子“foo”,你需要知道什么才能将 foo 标记为“内袋”还是“外袋”?
  • 不是最外袋的“任何袋子”是“内袋”吗?
  • 内部和外部的标签总是排他的吗?
  • 在 PigLatin 中,所有的“包”都是“关系”——还是只有“最外层的包”是一个关系? (和内袋没有关系)

  • 创建一个可讨论的示例:
    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 不保证这些元组的顺序(除非您是 ORDER 或其他)。所以,如果你仔细想想,关系 A真的只是一个 无序元组集 .这是一个外袋。

    你可以找到一些这样的例子 here .

    关于apache-pig - pigLatin 中的 'outer bag' 和 'inner bag' 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237575/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com