Spark 之 sql 缓存
来源:互联网 发布:mk淘宝代购的是真是假 编辑:程序博客网 时间:2024/06/06 04:56
转自:http://blog.csdn.net/lsshlsw/article/details/48662669
hkl曰:缓存对于一些复用程度很高的rdd来说是很有用的,可以很大程度上提高效率。
1.几种缓存数据的方法
例如有一张Hive表叫做activity
1.CACHE TABLE
//缓存全表sqlContext.sql("CACHE TABLE activity")//缓存过滤结果sqlContext.sql("CACHE TABLE activity_cached as select * from activity where ...")
CACHE TABLE是即时生效(eager)的,如果你想等到一个action操作再缓存数据可以使用CACHE LAZY TABLE,这样操作会直到一个action操作才被触发,例如count(*)
sqlContext.sql("CACHE LAZY TABLE ...")
取消hive表缓存数据
sqlContext.sql("UNCACHE TABLE activity")
hkl曰:
上代码不废话:有现成的API
val videoCenterMac = sqlContext.sql(s"select * from xlold.video_center_mac where day = '$day'")videoCenterMac.registerTempTable("videoCenterTmp")sqlContext.cacheTable("videoCenterTmp")
2.将dataFrame注册成表并缓存
val df = sqlContext.sql("select * from activity")df.registerTempTable("activity_cached")sqlContext.cacheTable("activity_cached")Tip:cacheTable操作是lazy的,需要一个action操作来触发缓存操作。
对应的uncacheTable可以取消缓存
sqlContext.uncacheTable("activity_cached")
3.缓存dataFrame
val df = sqlContext.sql("select * from tableName")df.cache()
2.缓存结果
缓存时看到如下提示:
Added rdd_xx_x in memory on ...
如果内存不足,则会存入磁盘中,提示如下:
Added rdd_xx_x on disk on ...
缓存数据后可以在Storage上看到缓存的数据
3.一些参数
spark.sql.autoBroadcastJoinThreshold
该参数默认为10M,在进行join等聚合操作时,将小于该值的表broadcast到每台worker,消除了大量的shuffle操作。
spark.rdd.compress true
将rdd存入mem或disk前再进行一次压缩,效果显著,我使用cacheTable了一张表,没有开启该参数前总共cache了54G数据,开启这个参数后只34G,可是执行速度并没有收到太大的影响。
spark.sql.shuffle.partitions
这个参数默认为200,是join等聚合操作的并行度,如果有大量的数据进行操作,造成单个任务比较重,运行时间过长的时候,会报如下的错误:
org.apache.spark.shuffle.FetchFailedException: Connection from /192.168.xx.xxx:53450 closed
这个时候需要提高该值。
阅读全文
0 0
- Spark 之 sql 缓存
- Spark之缓存策略
- Spark 入门篇之spark&spark sql
- Spark SQL 之 DataFrame
- Spark学习之Spark SQL(8)
- Spark SQL 之 Data Sources
- Spark SQL 之SQLContext(二)
- Spark SQL 之 Join 实现
- Spark SQL 之 Join 实现
- Spark SQL 之 Join 实现
- spark基础之spark sql运行原理和架构
- Spark SQL源码分析之核心流程
- Spark SQL Catalyst源码分析之SqlParser
- Spark SQL Catalyst源码分析之Analyzer
- Spark SQL Catalyst源码分析之Optimizer
- Spark SQL Catalyst源码分析之Analyzer
- Spark SQL Catalyst源码分析之UDF
- Spark SQL之External DataSource外部数据源
- NDK开发中的一些常见错误及解决办法
- 「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程
- JZOJ 8.8 B组总结
- 模拟实现atoi函数
- 【Android Hybrid App】Cordova 之扫码(二维码)功能
- Spark 之 sql 缓存
- HDFS
- 分页异常:Error: 未知的属性:“pageBean”
- struts2简单入门示例
- 利用while循环实现数字颠倒
- Python入门4_之字典的使用
- 过滤器(filter)学习---全站压缩实例
- oracle创建数据库和用户
- iCheck美化check标签