在行满足条件的地方创建一个impala文本表

6ss1mwsb  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(375)

我试图在impala(sql)中创建一个表,从一个parquet表中获取行。这些数据代表了一个城市骑自行车的情况。如果起始代码(字符串,例如:“6100”)在第一个表中出现超过100次,则行将导入新表。到目前为止,我得到的是:


# I am using Apache Impala via the Hue Editor

invalidate metadata;
set compression_codec=none;

invalidate metadata;
Set compression_codec=gzip;

create table bixirides_parquet (
start_date string, start_station_code string, 
end_date string, end_station_code string, 
duration_sec int, is_member int)
stored as parquet;

Insert overwrite table bixirides_parquet select * from bixirides_avro;

invalidate metadata;
set compression_codec=none;

create table impala_out stored as textfile as select start_date, start_station_code, end_date, end_station_code, duration_sec, is_member, count(start_station_code) as count
from bixirides_parquet
having count(start_station_code)>100;

出于某种原因,该语句将运行,但不会在新表中插入任何行。如果起始代码行在原始表中出现超过100次,则应该将该行导入新表。我想我的select语句措辞不当,但我不确定具体是怎么写的。

2o7dmzc5

2o7dmzc51#

我想你要问的最后一个问题是:

select start_date, start_station_code, end_date, 
       end_station_code, duration_sec, is_member, cnt
from (select bp.*,
             count(*) over (partition by start_station_code) as cnt
      from bixirides_parquet bp
     ) bp
where cnt > 100;

相关问题