欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

Shark迁移到Spark 1.1.0 编程指南

  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。


如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

  这里介绍一下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)
喜欢 (5)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!
(2)个小伙伴在吐槽
  1. 博主更新速度好快啊,还没发不出来就已经出文章了!!

    412554112014-09-13 10:54 回复