1

我正在尝试将数据从 excel 导出到配置单元表中,同时这样做,我有一列“ABC”,其值类似于“1,2,3”。我使用了横向视图分解功能,但它对我的数据没有任何作用。

以下是我的代码片段: CREATE TABLE table_name ( id string, brand string, data_name string, name string, address string, country string, flag string, sample_list array ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
;
LOAD DATA LOCAL INPATH 'location' INTO TABLE table_name ;

输出样本:

id 品牌 data_name 名称 地址 国家 flag sample_list

19 1 ABC SQL ABC 玉米淀粉 IN 1 ["[1,2,3]"]

然后我做: 从franchise_unsupress LATERAL VIEW explode(SEslist) SEslist中选择*作为final_SE;

输出样本:

id 品牌 data_name 名称 地址 国家 flag sample_list

19 1 ABC SQL ABC 玉米淀粉 IN 1 [1,2,3]

我也试过: select * fromfranchise_unsupress 横向视图 explode(split(SEslist,',')) SEslist AS final_SE ; 但出现错误:

失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector 无法转换为 org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector

而我需要的是:

id 品牌 data_name 名称 地址 国家 flag sample_list

19 1 ABC SQL ABC 玉米淀粉 IN 1 1 19 1 ABC SQL ABC 玉米淀粉 IN 1 2 19 1 ABC SQL ABC 玉米淀粉 IN 1 3

任何帮助将不胜感激!谢谢你

4

2 回答 2

0

问题是数组以错误的方式被识别并加载为单个元素数组 ["[1,2,3]"]。应该是 [1,2,3]["1","2","3"](如果是array<string>

创建表时,为集合指定分隔符:

FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
于 2021-11-29T15:41:16.300 回答
0

我想提供我的答案。问题在于所提供的输入。我的输入 txt 文件在输入值周围有 [] 。他们必须被移除并且它起作用了。

于 2021-11-29T15:59:14.113 回答