Apache spark 获取包装数组中的非空值

Apache spark 获取包装数组中的非空值,apache-spark,hive,apache-spark-sql,bigdata,qubole,Apache Spark,Hive,Apache Spark Sql,Bigdata,Qubole,我有一个包装数组,当我使用横向视图分解查询时,我只想得到非空值。我还尝试了不为空,但没有返回任何内容 样本结构: 列名称:数组 WrappedArray([null,theVal,tags,[null,null,7298,null,null,null],false]) 模式是 array<struct<id:string,name:string,type:string,value:struct<member0:string,member1:bigint,member2:int

我有一个包装数组,当我使用横向视图分解查询时,我只想得到非空值。我还尝试了不为空,但没有返回任何内容

样本结构:

列名称:数组

WrappedArray([null,theVal,tags,[null,null,7298,null,null,null],false])
模式是

array<struct<id:string,name:string,type:string,value:struct<member0:string,member1:bigint,member2:int,member3:double,member4:float,member5:boolean>,shouldIndex:boolean>>
我的结果是:

__________
|**revs**|
__________
|7298    |
__________
| null   |
__________
使用时,不为空

SELECT DISTINCT revs
FROM events 
LATERAL VIEW EXPLODE(theARRAY.value.member2) theTab2 AS revs 
revs IS NOT NULL 
什么也不归还

我需要:

|**revs**|
__________
|7298    |
__________

如何修复我的查询以获得上述结果?

您可以将查询细化为:

SELECT revs FROM
( SELECT DISTINCT revs 'revs' 
FROM events 
LATERAL VIEW EXPLODE(theARRAY.value.member2) theTab2 AS revs 
) WHERE revs IS NOT NULL
SELECT revs FROM
( SELECT DISTINCT revs 'revs' 
FROM events 
LATERAL VIEW EXPLODE(theARRAY.value.member2) theTab2 AS revs 
) WHERE revs IS NOT NULL