2013-08-02 18 views
6

Próbuję utworzyć tabelę gałęzi z zagnieżdżonymi elementami kolekcji. Załóżmy, że mam tablicę struktury.Jak zdefiniować zagnieżdżone elementy kolekcji w ulu

CREATE TABLE SAMPLE(
    record array<struct<col1:string,col2:string>> 
    )row format delimited 
    fields terminated by ',' 
    collection items terminated by '|'; 

Pierwszy poziom, separator "," zastąpi domyślny separator "^ A".

Drugi poziom, separator "|" zastąpi domyślny ogranicznik drugiego poziomu "^ B", aby oddzielić najbardziej zewnętrzną strukturę (np. Array).

ula Trzeci poziom użyje separator domyślny poziom trzeci „^ c” jako separatora dla Struct

Teraz moje pytanie brzmi: w jaki sposób można zdefiniować separator dla drugiego poziomu (tj Struct), ponieważ „^ Znak C jest trudny do odczytania i generowania.

Czy istnieje sposób jawnego zdefiniowania separatora zamiast^C?

Z góry dziękuję.

Odpowiedz

10

spróbować czegoś takiego:

CREATE TABLE SAMPLE(
id BIGINT, 
record array<struct<col1:string,col2:string>> 
)row format delimited 
fields terminated by ',' 
collection items terminated by '|' 
map keys terminated by ':'; 

Teraz dane w pliku tekstowym będzie wyglądać następująco:

1345653,110909316904:1341894546|221065796761:1341887508 

Następnie można zapytać to lubią:

select record.col1 from SAMPLE; 
+0

miła odpowiedź mukesh – saching

Powiązane problemy