将数据缓存在内存中,提高性能的措施,分布式缓存
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. ASP.NET 2.0 X64的奇怪问题
  2. 锐捷大中型企业VLAN网络方案
  3. mysql 统计日报_mysql 数据分析如何实现日报、周报、月报和年报?
  4. configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...
  5. 【牛客刷题记录】2021-03-10
  6. 量词逻辑量词里面的v表示?_代理知识表示中的量词简介(基于人工智能)
  7. passed into methods by value java专题
  8. nginx 和 php超时设置
  9. PDFMiner 操作 PDF 文件
  10. python安装pyltp_windows 安装pyltp详细教程
  11. javascriptji c z s
  12. C语言--正弦、余弦函数
  13. 快速查找论文的源代码网站资料
  14. 中国集成电路产业人才白皮书北京发布--李武宜
  15. 小型计算机房建设标准,依据国家计算机房建设标准.doc
  16. Linux timeout 命令
  17. 显著性检测方法:LC
  18. 初学者入门:软件测试从零开始
  19. 用ip地址连接服务器无响应,DNS服务器无响应如何解决
  20. RSD规则法分类识别乡村土路

热门文章

  1. Django 1.10中文文档-聚合
  2. python中startswith()函数的用法
  3. 网络分解的时代即将到来,云服务商正在铺路 | 分析师洞察
  4. Flask中制作博客首页的分类功能(一)
  5. Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库
  6. 成考期末计算机组成原理,2020年10月自考02318计算机组成原理真题及答案
  7. [搬运] mac下安装GDB
  8. 线性回归的简洁实现(pytorch框架)
  9. centos操作系统版本获取
  10. Linux修改时区和时间