如何在hive

时间:2018-02-01 17:17:24

标签: hive hadoop2

我的数据有两个数组(可能有不同的大小),如下所示:

    {  
  "depotCode":"0001",
  "in":[  
    {  
      "partCode":"AX-01",
      "qty":15
    },
    {  
      "partCode":"AX-02",
      "qty":77
    },
    {  
      "partCode":"AX-03",
      "qty":100
    }      ],
  "out":[  
    {  
      "partCode":"AX-01",
      "qty":7
    },
    {  
      "partCode":"TB-77",
      "qty":5
    }
  ]
}

预期结果如下:

depotCode,partCode,in,out
0001,AX-01,15,7
0001,AX-02,77,0
0001,AX-03,100,0
0001,TB-77,0,5

什么是有效的hive查询? 如果您注意到,由于AX-01同时出现在“in”和“out”中,因此两个字段的值都不为零。 至于另一个,任何一个都是零

PS:如果可能的话,我需要在单个查询中完成并且有效率,因为我们已经有超过10亿行(因此应该避免使用可能很慢的子查询,除非子查询在蜂巢或火花等方面不是很慢)等等)

1 个答案:

答案 0 :(得分:0)

@srilanka_ratnapura; use concat_ws function

here is a documentation about it: http://www.folkstalk.com/2011/11/string-functions-in-hive.html

Example: 
select concat_ws(',', col1, col2, col3, col4) from tbl 
Returns:
     col1,col2,col3,col4

Hope this helps. Thanks.