蜂巢中的横向视图爆炸功能
LATERAL VIEW explode funtion in hive
我正在尝试将数据从 excel 导出到配置单元 table,这样做时,我有一列 'ABC',其值类似于“1,2,3” .
我使用了横向视图分解功能,但它对我的数据没有任何作用。
以下是我的代码片段:
创建 TABLE table_name
(
标识字符串,
品牌串,
data_name 字符串,
名称字符串,
地址字符串,
国家字符串,
标志字符串,
sample_list数组)
由 '\t'
终止的行格式分隔字段
存储为文本文件
;
加载数据本地输入路径 'location' 进入 TABLE
table_name;
输出样本:
id brand data_name name address country flag sample_list
19 1 ABC SQL ABC 玉米淀粉 IN 1 ["[1,2,3]"]
那我做:
select * 来自 franchise_unsupress 横向视图 explode(SEslist) SEslist as final_SE;
输出样本:
id brand data_name name address country flag sample_list
19 1 ABC SQL ABC 玉米淀粉 1 [1,2,3]
我也试过了:
select * 来自 franchise_unsupress 侧视图 explode(split(SEslist,',')) SEslist AS final_SE ;
但出现错误:
失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector 无法转换为 org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector
然而,我需要的是:
id brand data_name name address country 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
任何帮助将不胜感激!谢谢
问题是数组以错误的方式被识别并加载为单个元素数组["[1,2,3]"]
。它应该是[1,2,3]
或["1","2","3"]
(如果是array<string>
)
创建 table 时,为集合指定分隔符:
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
我想提供我的答案。
问题在于所提供的输入。我的输入 txt 文件在输入值周围有 []。它们必须被移除并且它起作用了。
我正在尝试将数据从 excel 导出到配置单元 table,这样做时,我有一列 'ABC',其值类似于“1,2,3” . 我使用了横向视图分解功能,但它对我的数据没有任何作用。
以下是我的代码片段:
创建 TABLE table_name
(
标识字符串,
品牌串,
data_name 字符串,
名称字符串,
地址字符串,
国家字符串,
标志字符串,
sample_list数组)
由 '\t'
终止的行格式分隔字段
存储为文本文件
;
加载数据本地输入路径 'location' 进入 TABLE
table_name;
输出样本:
id brand data_name name address country flag sample_list
19 1 ABC SQL ABC 玉米淀粉 IN 1 ["[1,2,3]"]
那我做: select * 来自 franchise_unsupress 横向视图 explode(SEslist) SEslist as final_SE;
输出样本:
id brand data_name name address country flag sample_list
19 1 ABC SQL ABC 玉米淀粉 1 [1,2,3]
我也试过了: select * 来自 franchise_unsupress 侧视图 explode(split(SEslist,',')) SEslist AS final_SE ; 但出现错误:
失败:ClassCastException org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector 无法转换为 org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector
然而,我需要的是:
id brand data_name name address country 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
任何帮助将不胜感激!谢谢
问题是数组以错误的方式被识别并加载为单个元素数组["[1,2,3]"]
。它应该是[1,2,3]
或["1","2","3"]
(如果是array<string>
)
创建 table 时,为集合指定分隔符:
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
我想提供我的答案。 问题在于所提供的输入。我的输入 txt 文件在输入值周围有 []。它们必须被移除并且它起作用了。