bash - 如何在配置单元中使用 Posexplode 函数

标签 bash hadoop

我正在使用 posexplode 将配置单元中的单个记录拆分为多个记录。 除了作为输出的多条记录外,我还需要为每一行生成序列号。

col1col2col3col4 被定义为字符串,因为我们很少同时获得 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

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

最佳答案

尝试

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 开始可用。

关于bash - 如何在配置单元中使用 Posexplode 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405104/

相关文章:

hadoop - Apache Sqoop 于 2021 年 6 月搬进阁楼

bash - 如何在 bash 中判断一个值是偶数还是奇数?

macos - 找不到 Bash 命令——$PATH 已损坏

linux - bash 脚本 - 根据用户输入生成建议

hadoop - hadoop的用例

hadoop - Hive 输出大于 dfs block 大小限制

linux - 哪个 cygwin 包获取 `parallel` 命令?

bash - 使用部分文件名添加为字段/列

java - 获取 hbase 中所有键的最新版本

hadoop - 如何在配置单元加载命令中使用变量