首页 理论教育 Shark迁移至SparkSQL的指南

Shark迁移至SparkSQL的指南

时间:2023-06-21 理论教育 版权反馈
【摘要】:Spark是一个活跃的项目,更新的速度也很快,对于一些从Shark迁移到Spark SQL平台的用户,需要注意以下内容。所用指令为“SET spark.sql.thriftserver.scheduler.pool=accounting”。在Shark中,默认的reducer数量为1,设置reducer数量的属性为mapred.reduce. tasks,而Spark SQL不用这个属性,用的是spark.sql.shuffle.partitions,其默认值为200。目前,mapred.reduce.tasks仍然可被识别,但会自动转变为spark.sql.shuffle.partitions属性。Shark中的表属性shark.cache被删除了,以“_cache”结尾的表也不再自动缓存。从Spark 1.2之后,Spark SQL新引入创建表的声明,其中使用户控制表是否缓存的语句如下。

Shark迁移至SparkSQL的指南

Spark是一个活跃的项目,更新的速度也很快,对于一些从Shark迁移到Spark SQL平台的用户,需要注意以下内容。

(1)用户可以通过设置变量spark.sql.thriftserver.scheduler.pool的值,为一次JDBC客户端会话设置一个公平调度池。所用指令为“SET spark.sql.thriftserver.scheduler.pool=accounting”。

(2)在Shark中,默认的reducer数量为1,设置reducer数量的属性为mapred.reduce. tasks,而Spark SQL不用这个属性,用的是spark.sql.shuffle.partitions,其默认值为200。也可以在hive-site.xml中设置这个属性,但需要重写默认的属性值。目前,mapred.reduce.tasks仍然可被识别,但会自动转变为spark.sql.shuffle.partitions属性。

(3)Shark中的表属性shark.cache被删除了,以“_cache”结尾的表也不再自动缓存。相反,这里提供了CACHE TABLE和UNCACHE TABLE操作,让用户显式地控制表的缓存。示例代码如下。

CACHE TABLE logs_last_month;

UNCACHE TABLE logs_last_month;

需要注意,与缓存RDD样,CACHE TABLE tbl是惰性操作。这个命令仅仅是标记了tbl,以确保当被计算的时候,表的分区被缓存到内存中了。只有当涉及这张表的查询语句执行的时候,这张表才会被真正缓存。从Spark 1.2之后,Spark SQL新引入创建表的声明,其中使用户控制表是否缓存的语句如下。(www.xing528.com)

CACHE[LAZY]TABLE[AS SELECT]...

需要注意的是,以下的3个缓存相关功能还未实现。

1)RDD重载。

2)内存级的缓存写操作。

3)用户自定义分区中的缓存回收策略。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈