如何在蜂巢中使用Posexplode功能

时间:2014-10-16 12:58:53

标签: bash hadoop

我正在使用posexplode将单个记录拆分为多个记录。 连同多个记录作为输出,我需要为每一行生成序列号。

col1col2col3col4被定义为字符串,因为我们很少获得字母数据。

col1 | col2| col3 | col4 
---------------------------
  7  |  9  |  A   |  3
  5  |  6  |  9

Seq | Col
----------
 1  |  7
 2  |  9
 3  |  A
 4  |  3
 1  |  5
 2  |  6
 3  |  9

我使用下面提到的查询,但我收到错误

  

-bash: syntax error near unexpected token (

我的查询是:

SELECT  
    seq, col  
FROM 
  (SELECT  array(  col1, col2 , col3,col4) as arr_r FROM srctable ) arrayrec
LATERAL VIEW posexplode(arrayrec) EXPLODED_rec as seq, col 

如何解决这个问题

我能够成功运行此查询:

SELECT  col  FROM 
(SELECT  array(  col1, col2 , col3,col4) 
as arr_r FROM srctable ) arrayrec
LATERAL VIEW explode(arrayrec) EXPLODED_rec as col

产生以下输出

  Col
 -----
   7
   9
   A
   3
   5
   6
   9

我查看了链接:How to get first n elements in an array in Hive

1 个答案:

答案 0 :(得分:0)

尝试

SELECT  Seq, col  FROM 
(SELECT  array(  col1, col2 , col3,col4) 
as arr_r FROM srctable ) arrayrec
LATERAL VIEW posexplode(arrayrec.arr_r) EXPLODED_rec as Seq, col;

另请检查您的配置单元版本。 posexplode()从Hive 0.13.0开始可用。