【问题标题】:LATERAL VIEW explode funtion in hive蜂巢中的横向视图爆炸功能
【发布时间】:2022-01-06 10:34:26
【问题描述】:

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

以下是我的代码 sn-p : 创建表表名 ( 标识字符串, 品牌串, data_name 字符串, 名称字符串, 地址字符串, 国家字符串, 标志字符串, sample_list 数组) 以“\t”结尾的行格式分隔字段
存储为文本文件
;
将数据本地输入路径“位置”加载到表中 表名;

输出样本:

id brand data_name name address country flag sample_list

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

那我做: select * fromfranchise_unsupress LATERAL VIEW explode(SEslist) SEslist as final_SE;

输出样本:

id brand data_name name address country 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 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

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

【问题讨论】:

    标签: view hive explode hiveddl lateral


    【解决方案1】:

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

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

    FIELDS TERMINATED BY '\t'
    COLLECTION ITEMS TERMINATED BY ','
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      • 这在参考您的原始问题时有点模棱两可。请您edit您的回答包括具体示例,说明以前的样子以及您将其更改为什么?
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2015-07-08
      • 2021-12-12
      • 1970-01-01
      • 2014-06-10
      • 2017-07-13
      • 2018-12-21
      相关资源
      最近更新 更多