如何在配置单元中使用posexplode函数

ni65a41a  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(388)

我正在使用 posexplode 在配置单元中将单个记录拆分为多个记录。随着多个记录作为输出,我需要为每一行生成序列号。 col1 , col2 , col3 以及 col4 定义为字符串是因为我们很少得到alpha数据。

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

我已经检查了链接:如何在配置单元中获得数组中的前n个元素

z8dt9xmd

z8dt9xmd1#

尝试

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;

还要检查你的Hive版本。posexplode()从hive 0.13.0开始提供。

相关问题