9

コレクション項目がネストされたハイブ テーブルを作成しようとしています。構造体の配列があるとします。

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

第 1 レベルの区切り文字「,」は、デフォルトの区切り文字「^A」をオーバーライドします。

第 2 レベル、セパレータ '|' デフォルトの第 2 レベルの区切り文字 '^B' をオーバーライドして、最も外側の構造 (配列) を分離します。

第 3 レベルのハイブは、デフォルトの第 3 レベルの区切り文字 '^C' を構造体の区切り文字として使用します。

ここで私の質問は、第 2 レベル (構造体) のセパレーターを定義するにはどうすればよいかということです。'^C' 文字は読み取りも生成も難しいためです。

^C の代わりに区切り記号を明示的に定義する方法はありますか?

前もって感謝します。

4

1 に答える 1

14

次のようなことを試してください:

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 ':';

テキストファイルのデータは次のようになります。

1345653,110909316904:1341894546|221065796761:1341887508

次に、次のようにクエリできます。

select record.col1 from SAMPLE;
于 2013-08-02T10:04:42.490 に答える