RDD Persistence持久化
将数据缓存在内存中,提高性能的措施,分布式缓存
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持久化相关推荐
- pyspark rdd 数据持久化
pyspark rdd 数据持久化 from pyspark import SparkContext ,SparkConfconf=SparkConf().setAppName("miniP ...
- Spark RDD Persistence
http://www.cnblogs.com/yurunmiao/p/4966393.html Spark最为重要的特性之一就是可以在多个操作(Action)之间,将一个或多个RDD关联的数据集(Da ...
- Python Spark RDD
Python Spark RDD RDD(Resilient Distributed Dataset)弹性分布式数据集是Spark的核心,RDD能与其他系统兼容,可以导入外部存储系统的数据集,例如HD ...
- spark入门三(RDD基本运算)
1. RDD基本操作 val rdd1 = sc.parallelize(List(1,2,3,4,4)) 输出结果:rdd1: org.apache.spark.rdd.RDD[Int] = Par ...
- 《Python Spark 2.0 Hadoop机器学习与大数据实战_林大贵(著)》pdf
<Python+Spark 2.0+Hadoop机器学习与大数据实战> 五星好评+强烈推荐的一本书,虽然内容可能没有很深入,但作者非常用心的把每一步操作详细的列出来并给出说明,让我们跟着做 ...
- 2021年大数据Spark(十七):Spark Core的RDD持久化
目录 RDD 持久化 引入 API 缓存/持久化函数 缓存/持久化级别 释放缓存/持久化 代码演示 总结:何时使用缓存/持久化 RDD 持久化 引入 在实际开发中某些RDD的计算或转换可能会比较耗费时 ...
- Spark性能优化:对RDD持久化或CheckPoint操作
对多次使用的RDD进行持久化或Checkpoint 如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作.那么就非常有必要对其进行持久化操作,以避免对一个RDD ...
- RDD持久化、广播、累加器
1.持久化 RDD的持久化包括两个方面:①操作RDD的时候怎么保存结果,这个部分属于action算子的部分②在实现算法的时候要进行cache.persist,还有checkpoint进行持久化. 1. ...
- Spark基础学习笔记20:RDD持久化、存储级别与缓存
文章目录 零.本讲学习目标 一.RDD持久化 (一)引入持久化的必要性 (二)案例演示持久化操作 1.RDD的依赖关系图 2.不采用持久化操作 3.采用持久化操作 二.存储级别 (一)持久化方法的参数 ...
最新文章
- ASP.NET 2.0 X64的奇怪问题
- 锐捷大中型企业VLAN网络方案
- mysql 统计日报_mysql 数据分析如何实现日报、周报、月报和年报?
- configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...
- 【牛客刷题记录】2021-03-10
- 量词逻辑量词里面的v表示?_代理知识表示中的量词简介(基于人工智能)
- passed into methods by value java专题
- nginx 和 php超时设置
- PDFMiner 操作 PDF 文件
- python安装pyltp_windows 安装pyltp详细教程
- javascriptji c z s
- C语言--正弦、余弦函数
- 快速查找论文的源代码网站资料
- 中国集成电路产业人才白皮书北京发布--李武宜
- 小型计算机房建设标准,依据国家计算机房建设标准.doc
- Linux timeout 命令
- 显著性检测方法:LC
- 初学者入门:软件测试从零开始
- 用ip地址连接服务器无响应,DNS服务器无响应如何解决
- RSD规则法分类识别乡村土路
热门文章
- Django 1.10中文文档-聚合
- python中startswith()函数的用法
- 网络分解的时代即将到来,云服务商正在铺路 | 分析师洞察
- Flask中制作博客首页的分类功能(一)
- Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库
- 成考期末计算机组成原理,2020年10月自考02318计算机组成原理真题及答案
- [搬运] mac下安装GDB
- 线性回归的简洁实现(pytorch框架)
- centos操作系统版本获取
- Linux修改时区和时间