通过扫描一次并运行许多查询来优化Sparksql查询

时间:2016-10-06 10:15:01

标签: scala apache-spark apache-spark-sql

我在同一个数据集上有多个sql select查询,每个sql查询扫描数据的数据集大小约为500GB并给我输出,有没有办法扫描数据一次并在其上运行查询。

下面是我的代码样本:

psr2

这个数据一旦加载就会超过500GB我在Queries:

以下运行
val DataRDD = sc.textFile("s3n://<Key>:<Key>@mediationprodlogs/vast_track_event/2016/10/3/*")

在这种格式中我有很多,每个查询扫描所有数据,是否可以扫描一次并给我输出。我知道sparksql只扫描所需的列,即使我的查询使用相同的列可以这样做吗?

1 个答案:

答案 0 :(得分:0)

您可以编写像这样的Hive查询: (确保创建一个临时表&#34; DevCount&#34;)

FROM adreqdata
 INSERT INTO DevCount
  SELECT DeviceId, count(*) 
   where Network = 9 and EventType = 2 
    group by DeviceId
 INSERT INTO DevCount
  select DeviceId,count(EventType) as AllAdreqCount 
   where EventType = 1 and Network = 0 
    group by DeviceId