2013-10-08 11 views
7

El kitabında/belgede 'iç çanta' ve 'dış çanta' dili kullanılır (örneğin: http://pig.apache.org/docs/r0.11.1/basic.html) ve henüz terimleri ayıran kesin tanımı net olarak çözemedim.pigLatin'de 'dış torba' ve 'iç torba' arasındaki ayrım nedir?

örn. Tüm doğal olarak birbiriyle:

  • Sana bir çanta verirsek 'foo' ne bir 'dış torba' vs bir 'iç torba' olarak foo etiketlemek bilmek gerekir?
  • En dış çanta değil, daha sonra 'bir iç çanta' olan herhangi bir çanta mı?
  • İç ve dış etiketler daima münhasır mudur?
  • PigLatin'de, tüm 'torbalar' ilişkileri vardır - ya da sadece 'en dış torba' bir ilişki midir? - W1, W2, W3 ve W4 ün, - iç, dış bir torba arasında

    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)})})})}) 
    

    :

bir tartışılır örnek oluşturmak için (ve iç torba ilişkiler değildir)?

cevap

4

Dış çanta aslında A ilişkisidir. Bu biraz garip, ama bir iç torbanın ne olduğunu bildiğiniz zaman netleşecek. Okunabilir poşetlerin cevabı değiştirmediğinden okunabilirlik için W1'a bakalım. W1 için

Şema ve çıkışı:

W1: {group:chararray, A:bag{:tuple(f1:int,f2:int,f3:int)}} 
(all,{(1, 2, 3), (8, 3, 4)}) 

Biz çanta A adlı W1 bir alan onların görebilirsiniz. Bu bir iç torbadır çünkü çanta ilişkide bir alandır.

Torbaların sırasız kümeler olduğunu unutmayın ve bunun W1 için çıktı olduğunu görebiliriz. Şimdi, ilişki A çıkışında bakmak:

(1,2,3) 
(4,2,1) 
(8,3,4) 
(4,3,3) 

Domuz bu küpe sırasını garanti etmez (sizin ORDER falan sürece). Yani, bu konuda düşünürseniz, A ilişkisi sadece sırasız bir dizi dizisidir. Bu bir dış çanta.

Bu here'un bazı örneklerini bulabilirsiniz. Bu yardımcı oldu, thx.

+0

. Sanırım şimdi anladım: başka bir çantada bulunmayan torba 'dış çanta'; ve ayrıca 'ilişki' olur. Herhangi bir torba içeriyorsa, her biri 'bir iç torba' (ve 'dış torba' değildir). –

İlgili konular