将数据缓存在内存中,提高性能的措施,分布式缓存
intRddMemory = sc.parallelize([3,1,2,5,5])
intRddMemory.persist() # 持久化缓存

intRddMemory.is_cached
true

通过case class样例类来,因为case class是scala的特色
/**
表t_stu的结构为:
id,
name,
age
*/
object CreateDF {
def main(args:Array[String]):Unit = {
//1.这是最新的获取SQLContext对象的方式

//2.创建SparkSession对象,设置master,appname
val spark= SparkSession.builder().master("local[*]").appName("create DF case class").getOrCreate()//3.通过spark获取sparkContext对象,读取数据
val lines = spark.sparkContext.textFile(path = "").map(_.split(","))//4.将数据映射到case class中,也就是数据映射到表的对应字段中
val tb = lines.map(t=>emp(t(0).toInt,t(1),t(2).toInt))
// 这里必须加上隐式转换,否则无法调用toDF函数
import spark.sqlContext,implicits._//5.生成DF
val df1 = tb.toDF()// 相当于select name from t_stu
df1.select($"name").show()// 关闭spark对象
spark.stop()
}
}/**定义case class,每个属性对应表中的字段名和类型。在一般生产中,为了方便,会将全部定义为String类型,然后有需要的时候
才根据实际情况将string转为需要的类型,这一步相当于定义表的结构
*/
case class(id:Int,name:String,age:Int)总结步骤为:1.定义case class,用于表结构2.创建SparkSession对象,用来读取数据3.将rdd中的数据和case class映射4.调用toDF函数将rdd转为DataFrame操作DataFrame:使用DSL/DMLJDBC写入数据到mysql中,和读取类似,只不过换成了write操作:
object WriteToMysql {def main(args:Array[String]):Unit = {val spark = SparkSession.builder().appName("write to mysql").master("local").getOrCreate()val df1 = spark.read.text("G:\\test\\t_stu.json")//方式一:f1.write.format("jdbc").option("url","jdbc:mysql://bigdata121:3306/test?serverTimezone=UTC&characterEncoding=utf-8").option("user","root").option("password","wjt86912572").option("driver","com.mysql.jdbc.Driver").option("dbtable","customer").save()// 方式二:val mysqlConn = new Properties()mysqlConn.setProperty("user","root")mysqlConn.setProperty("password","wjt86912572")df1.write.jdbc("jdbc:mysql://bigdata121:3306/test?serverTimezone=UTC&characterEncoding=utf-8","customer",mysqlConn)}}

三.性能优化
//标记这张表可以被缓存,但数据现在并没有直接缓存
spark.sqlContext.cacheTable(“customer”)
//第一次查询表,从mysql中读取数据,并缓存到内存中去
spark.sql(“select * from customer”).show

RDD Persistence持久化相关推荐

  1. pyspark rdd 数据持久化

    pyspark rdd 数据持久化 from pyspark import SparkContext ,SparkConfconf=SparkConf().setAppName("miniP ...

  2. Spark RDD Persistence

    http://www.cnblogs.com/yurunmiao/p/4966393.html Spark最为重要的特性之一就是可以在多个操作(Action)之间,将一个或多个RDD关联的数据集(Da ...

  3. Python Spark RDD

    Python Spark RDD RDD(Resilient Distributed Dataset)弹性分布式数据集是Spark的核心,RDD能与其他系统兼容,可以导入外部存储系统的数据集,例如HD ...

  4. spark入门三(RDD基本运算)

    1. RDD基本操作 val rdd1 = sc.parallelize(List(1,2,3,4,4)) 输出结果:rdd1: org.apache.spark.rdd.RDD[Int] = Par ...

  5. 《Python Spark 2.0 Hadoop机器学习与大数据实战_林大贵(著)》pdf

    <Python+Spark 2.0+Hadoop机器学习与大数据实战> 五星好评+强烈推荐的一本书,虽然内容可能没有很深入,但作者非常用心的把每一步操作详细的列出来并给出说明,让我们跟着做 ...

  6. 2021年大数据Spark(十七):Spark Core的RDD持久化

    目录 RDD 持久化 引入 API 缓存/持久化函数 缓存/持久化级别 释放缓存/持久化 代码演示 总结:何时使用缓存/持久化 RDD 持久化 引入 在实际开发中某些RDD的计算或转换可能会比较耗费时 ...

  7. Spark性能优化:对RDD持久化或CheckPoint操作

    对多次使用的RDD进行持久化或Checkpoint 如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作.那么就非常有必要对其进行持久化操作,以避免对一个RDD ...

  8. RDD持久化、广播、累加器

    1.持久化 RDD的持久化包括两个方面:①操作RDD的时候怎么保存结果,这个部分属于action算子的部分②在实现算法的时候要进行cache.persist,还有checkpoint进行持久化. 1. ...

  9. Spark基础学习笔记20:RDD持久化、存储级别与缓存

    文章目录 零.本讲学习目标 一.RDD持久化 (一)引入持久化的必要性 (二)案例演示持久化操作 1.RDD的依赖关系图 2.不采用持久化操作 3.采用持久化操作 二.存储级别 (一)持久化方法的参数 ...

最新文章

  1. [原创]Devexpress XtraReports 系列 10 创建标签报表
  2. sql server2005用户权限如何设置
  3. 二分类神经网络的特征光谱---2-3至2-9
  4. Python中集合的介绍以及常见操作
  5. c++二叉树编程实践
  6. 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决
  7. iphone微信电话不弹出_iPhone快速分享电话号码的方法!
  8. 软件测试——测试计划
  9. pandas merge融合
  10. 浙江5G+智能制造迅速推进连点成片。
  11. 【python批量插入图片到一个pdf中】
  12. 导出虚拟机的OVF 模板
  13. TPC-C 、TPC-H、TPC-DS和SSB测试基准(Benchmark)介绍
  14. mysql5.7安装审计日志插件audit-plugin
  15. QPainter使用QImage做画布时花屏
  16. 学会通过商品id来获得商品详情
  17. 漫谈数据库领域职业定位与发展
  18. iPhone鼎力支持 H.265编码技术及画质PK
  19. 如何在微软官网查询WHQL认证的产品
  20. CS5261与CS5265功能应用|CS5261替代RTD2171|CS5265替代RTD2172

热门文章

  1. 性能测试之:loadrunner 报lr_load_dll 失败 CCI trace: vuser_init.c(6): ci_load_dll查证及解决过程...
  2. xamarin.android 图片高斯模糊效果
  3. 开发打开设置洁面_用了两到三年的华为手机,一键打开开发者选项,帮助性能加速...
  4. 计算机通过逻辑电路实现运算,计算机组成与体系结构数据表示与运算算法和逻辑电路实现.ppt...
  5. SAP 录屏BDC使用—实例
  6. 微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章...
  7. U-Boot的常用命令详解
  8. 正经人一辈子都用不到的 JavaScript 方法总结 (二)
  9. java中a 和 a_Java中a=a++ 和 a=++a(轉)
  10. command shortcut paste