关于HIVE特征的汇总

时间:2015-08-03 13:31:44

标签: apache-spark hive

我有一堆通常具有以下形式的日志:

 userID      features
 1           time=4PM,userType=Casual,userType=Business,webSite=ebay
 2           time=6AM,userType=Casual

我想基于个别功能进行聚合,即在凌晨4点登录的用户数,临时用户数等等。

我尝试的是以下内容 - 拆分用户ID并将功能划分为一定数量的单个功能。

 userID      features
 1           time=4PM
 1           userType=Casual
 1           userType=Business
 1           webSite=ebay
 2           time=6AM
 2           userType=Casual

现在,我可以聚合各个功能,并使用Spark中的HiveQL将计算出的统计信息写入文件。这种方法的问题是我在Hive中耗尽了内存。是否有更好的方法来汇总HIVE中的个体特征?

1 个答案:

答案 0 :(得分:0)

您可以使用regexp_extract来解析每行中的要素值,而不会增加总行数。为了进一步节省内存,您可以将表保存为Parquet格式:

create table logs_columns
   (time string
   ,userType string
   --etc
   )
stored as parquet;

insert into table logs_columns
select userid 
   ,rexexp_extract('time=([^,]*)', features, 1) time
   ,rexexp_extract('userType=([^,]*)', features, 1) userType
   --etc
from logs;