2015-09-14 68 views
0
drop table if exists test_parquet; 
CREATE EXTERNAL TABLE IF NOT EXISTS test_parquet (
ckey string, 
eid string, 
emkey string, 
mkey string, 
urid string, 
vst array<struct<bd:string, p01:string, p02:string, uid:string, v_h:string, v_w:string, v_m:string,pd:array<struct<c1key:string,cp_met_key:string,od:string,o_key:string,omt:string,sey:string,skey:string>>>> 
) 
STORED AS Parquet 
LOCATION '/somelocation'; 

INSERT OVERWRITE TABLE test_parquet SELECT * FROM another_table; 

現在的工作,當我做拼花查詢WHERE子句不是ARRAY

select * from test_parquet; 

它的工作原理

select ckey, vst[0].bd, vst[0].pd[0].od from test_parquet limit 10; 

IT工程,以及!

select ckey 
from test_parquet 
where test_parquet.vst.p01 in ('A','B','C','D'); 

失敗。

任何想法如何寫一個數組where條件parquet

+0

想想你可以在發生失敗時發佈錯誤信息嗎? – gobrewers14

回答

0

我在工作時自己得到了答案。 ('A','B','C','D');其中test_parquet.vst [0] .p01中的test_parquet 選擇ckey 。 或 從test_parquet選擇ckey 其中test_parquet.vst [1] .p01 in('A','B','C','D');

這很好,因爲我們試圖訪問一個數組,我們需要通過索引訪問它們。