table 1 -

    name bal map<String,String> year

    abc 24000   {car : honda, company : boa} 2015
    ac 21000  { car:honda} 2015
    def 23000 {car:honda, company: boa} 2015
    abc 21000   {car : honda, company : boa} 2014
    ac 20000  { car:honda} 2014
    def 22000 {car:honda, company: boa} 2014

        Required Output after self join -

        name bal-difference map<String,String>
        abc 3000 {car : honda, company : boa}
        ac 1000 { car:honda}
        def 1000 {car:honda, company: boa}



    select
    t1.name,t1.mapColumn,(t1.bal-t2.bal)
    FROM  table1 t1 JOIN table1 t2
    ON t1.mapColumn = t2.mapColumn and t1.name = t2.name

我想对 map 列上的表格和 hive 中的名称执行自连接。这样我就可以执行平衡差,如示例输出所示。

我尝试加入,但未提供必填列。我想了解联接如何处理复杂的数据类型(在我的案例图中)。

最佳答案

看一下这个
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView

您必须使用LATER VIEW EXPLODE语法来公开嵌套 map ,并在JOIN中使用它。

关于sql - hive -加入 map 数据类型列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34047981/

10-11 04:54