Spark 1.1.0马上就要发布了(估计就是明天),其中更新了很多功能。其中对Spark SQL进行了增强:
1、Spark 1.0是第一个预览版本( 1.0 was the first “preview” release);
2、Spark 1.1 将支持Shark更新(1.1 provides upgrade path for Shark),
(1)、Replaced Shark in our benchmarks with 2-3X perfgains;
(2)、Can perform optimizations with 10-100X less effort than Hive。
这里介绍一下Shark升级到Spark 1.1.0注意的地方。
一、设置Reducer数量
在Shark中,默认的Reducer个数为1,并且可以通过mapred.reduce.tasks属性进行控制。Spark SQL中用新的属性名 spark.sql.shuffle.partitions代替了这个,它的默认值是200。用户可以SET来修改默认的值,如下:
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了。
二、Caching
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迁移知识请参见官方文档。
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Shark迁移到Spark 1.1.0 编程指南】(https://www.iteblog.com/archives/1116.html)
博主更新速度好快啊,还没发不出来就已经出文章了!!