我将数据存储在orc中的s3分区如下:mydata/year=2017/month=8/day=1
我已在此表顶部的spark中创建了一个外部表:
spark.catalog().createExternalTable(tableName, s3Path, "orc");
这允许我使用sql over spark thrift查询该存储桶中的数据,我可以运行指定分区的查询,这样我就可以更快地得到结果:
select count(*) from mytable where day = '1';
我还可以将表缓存在内存中以获得更快的结果:
cache table mytable
但是,我希望能够部分缓存表格,因为我没有足够的内存来缓存所有数据。我有1年的数据,但是我的大多数查询都是针对上个月的数据。有没有办法用cache table命令指定要在内存中缓存的分区?
我也意识到我可以通过创建一个视图来做到这一点,但我想知道是否有办法做到这一点,而不创建一个视图:
CREATE VIEW mytable_thismonth AS SELECT * FROM mytable where month = '8'