Hive 横向视图在蜂巢中爆炸

Hive 横向视图在蜂巢中爆炸,hive,hiveql,Hive,Hiveql,我有一个名为exampleTable的表,它包含两列字符串数组 Array<string> col1 Array<string> col2 ["a", "b" , "c" ] ["x","y","z"] ["aa", "bb" , "cc" ] ["xx","yy","zz"] 我考虑过使用LATERL VIEW,比如: SELECT myCol1, myCol2 FROM exampleTable LATERAL VIEW

我有一个名为exampleTable的表,它包含两列字符串数组

Array<string> col1  Array<string> col2
["a", "b" , "c" ]       ["x","y","z"]
["aa", "bb" , "cc" ]       ["xx","yy","zz"]
我考虑过使用LATERL VIEW,比如:

SELECT myCol1, myCol2  FROM exampleTable
         LATERAL VIEW explode(col1) myTable1 AS myCol1
         LATERAL VIEW explode(col2) myTable2 AS myCol2;
但这反而产生了这个

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"
我如何处理这个问题?
提前感谢。

您可以使用explode UDTF或explode 2 UDTF作为基础来编写UDTF


用于使用explode2底座

你能解决这个问题吗?是的,我解决了。我最终编写了自己的UDF。唯一的可能性似乎是编写一个自定义UDF或一个简单的自定义映射器脚本(使用Hive的转换功能)来实现这一点。它基本上需要3个数组并返回一个数组数组,其中每个子数组由相应索引处的元素组成。例如,此UDF将在此示例中获取3个元素:arg1:[标题1,标题2,标题3]arg2:[艺术家1,艺术家2,艺术家3]arg3:[专辑1,专辑2,专辑3],并返回[[标题1,艺术家1,专辑1],[标题2,艺术家2,专辑2],[标题3,艺术家3,专辑3]]我们可以分解这个数组并挑选出单独的索引来得到答案有没有办法将两列值传递给一个函数?
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"