lateral view explode in hive

10,107

You can write a UDTF using explode UDTF or explode2 UDTF as a base.

Refer here for using a explode2 base.

Share:
10,107
user1309258
Author by

user1309258

Updated on June 04, 2022

Comments

  • user1309258
    user1309258 about 2 years

    I have a table called exampleTable of two columns of arrays of strings.

    Array<string> col1  Array<string> col2
    ["a", "b" , "c" ]       ["x","y","z"]
    ["aa", "bb" , "cc" ]       ["xx","yy","zz"]
    

    My goal is produce a table like this

    col1                   col2
    "a"                     "x"
    "b"                     "y"
    "c"                     "z"
    "aa"                     "xx"
    "bb"                     "yy"
    "cc"                     "zz"
    

    I thought about using LATERL VIEW like :

    SELECT myCol1, myCol2  FROM exampleTable
             LATERAL VIEW explode(col1) myTable1 AS myCol1
             LATERAL VIEW explode(col2) myTable2 AS myCol2;
    

    but this produces this instead

    col1                   col2
    "a"                     "x"
    "a"                     "y"
    "a"                     "z"
    "a"                     "xx"
    "a"                     "yy"
    "a"                     "zz"
    "b"                     "x"
    "b"                     "y"
    "b"                     "z"
    "b"                     "xx"
    "b"                     "yy"
    "b"                     "zz"
    "c"                     "x"
    "c"                     "y"
    "c"                     "z"
    "c"                     "xx"
    "c"                     "yy"
    "c"                     "zz"
    "aa"                     "x"
    "aa"                     "y"
    "aa"                     "z"
    "aa"                     "xx"
    "aa"                     "yy"
    "aa"                     "zz"
    "bb"                     "x"
    "bb"                     "y"
    "bb"                     "z"
    "bb"                     "xx"
    "bb"                     "yy"
    "bb"                     "zz"
    "cc"                     "x"
    "cc"                     "y"
    "cc"                     "z"
    "cc"                     "xx"
    "cc"                     "yy"
    "cc"                     "zz"
    

    How can I tackle this? Thanks in advance.