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")

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

这个时候需要提高该值。

转载于:https://www.cnblogs.com/wuwuwu/p/6162572.html

spark sql cache相关推荐

  1. spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  2. Spark SQL 源代码分析系列

    从决定写Spark SQL文章的源代码分析,到现在一个月的时间,一个又一个几乎相同的结束很快,在这里也做了一个综合指数,方便阅读,下面是读取顺序 :) 第一章 Spark SQL源代码分析之核心流程 ...

  3. Spark SQL玩起来

    标签(空格分隔): Spark [toc] 前言 Spark SQL的介绍只包含官方文档的Getting Started.DataSource.Performance Tuning和Distribut ...

  4. spark SQL读取ORC文件从Driver启动到开始执行Task(或stage)间隔时间太长(计算Partition时间太长)且产出orc单个文件中stripe个数太多问题解决方案...

    1.背景: 控制上游文件个数每天7000个,每个文件大小小于256M,50亿条+,orc格式.查看每个文件的stripe个数,500个左右,查询命令:hdfs fsck viewfs://hadoop ...

  5. 如何查询spark版本_掌握Spark SQL中的查询执行

    了解您的查询计划 自从Spark 2.x以来,由于SQL和声明性DataFrame API,在Spark中查询数据已成为一种奢侈. 仅使用几行高级代码就可以表达非常复杂的逻辑并执行复杂的转换. API ...

  6. Spark SQL 之SQLContext(二)

    1. SQLContext的创建 SQLContext是Spark SQL进行结构化数据处理的入口,可以通过它进行DataFrame的创建及SQL的执行,其创建方式如下: //sc为SparkCont ...

  7. 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作

    转载自  实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时 ...

  8. Spark Relational Cache实现亚秒级响应的交互式分析

    本次分享主要分为以下四个方面: 项目介绍 技术分析 如何使用 性能分析 一.项目介绍 项目背景 阿里云EMR是一个开源大数据解决方案,目前EMR上面已经集成了很多开源组件,并且组件数量也在不断的增加中 ...

  9. Spark SQL整合Hive

    Spark SQL官方释义 Spark SQL is Apache Spark's module for working with structured data. 一.使用Spark SQL访问Hi ...

最新文章

  1. java中的doget_java servlet中doGet()和doPost()方法的用法和区别
  2. 【数据分析】33个热门数据分析软件,你都用过哪些?
  3. 【java】如何在IDEA 中查看 Class文件的汇编
  4. easyui datagrid 去掉外边框及行与行之间的横线标题字体
  5. ajax通过对象获得时间戳,从FullCalendar事件对象获取简单的时间戳
  6. 免费分享20套PHP源码
  7. android 加载ae动画,Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画...
  8. Qt学习视频资料汇总
  9. 《ParaView Tutorial》
  10. uniapp 集成腾讯云超级播放器问题
  11. Cydia添加源http://apt.Feng.com,完成packages卡住 解决方法
  12. git提交错分支处理
  13. javaFX学习笔记之 管理Web弹出式窗口
  14. 【TensorFlow】使用slim从ckpt里导出指定层的参数
  15. 电脑图片分类管理软件用什么工具,这一款便签工具可以管理图片
  16. 干货 | 一文读懂数据分析
  17. 网页滚动条样式修改 html+css
  18. PostgreSQL 修改用户密码
  19. Folium库使用心得(一)
  20. 可执行程序的装载——刘世鹏20135304

热门文章

  1. 大数据与商业地理分析
  2. MCU——JLINK接外部电源调试问题
  3. SparkStreaming transform算子入门案例
  4. spark 转换算子应用举例
  5. Django的rest_framework的视图之Mixin类编写视图源码解析...
  6. 深度学习(一)神经网络中的池化与反池化原理
  7. Nginx如何实现读写限流的方法
  8. SharePoint Framework 企业向导(六)
  9. java.io.StreamCorruptedException: invalid stream header: 20200909
  10. cPanel虚拟主机上运行Python的方法