SET spark.sql.shuffle.partitions=10; SELECT page, count(*) c FROM logs_last_month_cached GROUP BY page ORDER BY c DESC LIMIT 10;
当然,你也可以在hive-site.xml中进行设置来覆盖默认的值。目前,mapred.reduce.tasks属性仍然可以使用,在Spark内部,它被自动地转换成spark.sql.shuffle.partitions了。
shark.cache表属性不再可用,而且以_cached结尾的表格不再自动被缓存。在Spark 1.1.0中提供了CACHE TABLE 和 UNCACHE TABLE语句让用户显示的控制表的缓存。如下:
CACHE TABLE logs_last_month; UNCACHE TABLE logs_last_month;
需要注意的是,CACHE TABLE logs是lazy的,它只在需要缓存的时候才进行缓存。也就是直到触发了一次查询才进行缓存。为了让强制缓存,你可以在CACHE TABLE之后COUNT一下表格即可强制缓存,如下:
CACHE TABLE logs_last_month; SELECT COUNT(1) FROM logs_last_month;
另外,目前需要缓存相关的特性还不提供支持,主要包括如下:
1、User defined partition level cache eviction policy
2、RDD reloading
3、In-memory cache write through policy
更多的关于Shark迁移知识请参见官方文档。
博主更新速度好快啊,还没发不出来就已经出文章了!!