所以我有制表符分隔数据的外部表。一个简单的表格如下所示:
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/';
现在我在末尾添加另一个字段,它将是逗号分隔的值列表。
有没有一种方法可以像我指定字段终止符一样指定它,或者我是否必须依赖其中一个 Serdes?
eg:
...list_of_names ARRAY<String>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ARRAY ELEMENTS SEPARATED BY ','
...
(我假设我需要为此使用 serde,但我认为询问没有任何坏处)
我不知道如何更新现有表来做到这一点,但为了创建一个表;您可以在以下位置深入找到您要寻找的内容https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)