1

我将数据存储在 s3 中的 orc 中,分区如下: 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'
4

0 回答 0