5

したがって、タブ区切りデータの外部テーブルがあります。単純なテーブルは次のようになります。

create external table if not exists categories
(id string, tag string, legid string, image string, parent string, created_date string, time_stamp int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3n://somewhere/';

ここで、最後に別のフィールドを追加します。これは、コンマで区切られた値のリストになります。

フィールドターミネータを指定するのと同じ方法でこれを指定する方法はありますか、それともセルデスの1つに依存する必要がありますか?

例えば:

...list_of_names ARRAY<String>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ARRAY ELEMENTS SEPARATED BY ','
...

(これにはSerdeを使用する必要があると思いますが、質問しても害はないと思いました)

4

1 に答える 1

6

既存のテーブルを更新してそれを行う方法はわかりませんが、テーブルを作成するためです。探しているものは、https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDLで詳細に見つけることができます。そこからの抜粋

row_format
  : DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]

テーブル作成の例は次のとおりです。

CREATE TABLE IF NOT EXISTS visits
(
    ... Columns Removed...
)
    PARTITIONED BY (userdate STRING)
    ROW FORMAT DELIMITED
        FIELDS TERMINATED BY '\001'
        COLLECTION ITEMS TERMINATED BY '\002'
        MAP KEYS TERMINATED BY '\003'
    STORED AS TEXTFILE
;

あなたが探しているものからの行はCOLLECTION ITEMS TERMINATED BY char、配列のです。

hth

于 2011-06-07T20:26:26.697 に答える