首页

文章

Spark RDD,DataFrame和DataSet的区别

发布网友 发布时间:2022-03-24 14:25

我来回答

2个回答

热心网友 时间:2022-03-24 15:55

RDD
优点:
编译时类型安全
编译时就能检查出类型错误
面向对象的编程风格
直接通过类名点的方式来操作数据
缺点:
序列化和反序列化的性能开销
无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化.
GC的性能开销
频繁的创建和销毁对象, 势必会增加GC
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}

object Run {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("test").setMaster("local")
val sc = new SparkContext(conf)
sc.setLogLevel("WARN")
val sqlContext = new SQLContext(sc)

/**
* id age
* 1 30
* 2 29
* 3 21
*/
case class Person(id: Int, age: Int)
val idAgeRDDPerson = sc.parallelize(Array(Person(1, 30), Person(2, 29), Person(3, 21)))

// 优点1
// idAge.filter(_.age > "") // 编译时报错, int不能跟String比

// 优点2
idAgeRDDPerson.filter(_.age > 25) // 直接操作一个个的person对象
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DataFrame
DataFrame引入了schema和off-heap
schema : RDD每一行的数据, 结构都是一样的.追答def createDataFrame(rowRDD: RDD[Row], schema: StructType): DataFrame = {
sparkSession.createDataFrame(rowRDD, schema)
}
1
2
3
4
但是其实却是DataSet, 因为DataFrame被声明为Dataset[Row]
package object sql {
// ...省略了不相关的代码

type DataFrame = Dataset[Row]
}
1
2
3
4
5
因此当我们从1.6.x迁移到2.0.0的时候, 无需任何修改就直接用上了DataSet.
下面是一段DataSet的示例代码
import org.apache.spark.sql.types.{DataTypes, StructField, StructType}
import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}

object Test {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("test").setMaster("local") // 调试的时候一定不要用local[*]
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._

val idAgeRDDRow = sc.parallelize(Array(Row(1, 30), Row(2, 29), Row(4, 21)))

val schema = StructType(Array(StructField("id", DataTypes.IntegerType), StructField("age", DataTypes.IntegerType)))

// 在2.0.0-preview中这行代码创建出的DataFrame, 其实是DataSet[Row]
val idAgeDS = sqlContext.createDataFrame(idAgeRDDRow, schema)

// 在2.0.0-preview中, 还不支持自定的Encoder, Row类型不行, 自定义的bean也不行
// 官方文档也有写通过bean创建Dataset的例子,但是我运行时并不能成功
// 所以目前需要用创建DataFrame的方法, 来创建DataSet[Row]
// sqlContext.createDataset(idAgeRDDRow)

// 目前支持String, Integer, Long等类型直接创建Dataset
Seq(1, 2, 3).toDS().show()
sqlContext.createDataset(sc.parallelize(Array(1, 2, 3))).show()
}
}

热心网友 时间:2022-03-24 17:13

官网解释:
RDD:A Resilient Distributed Dataset (RDD), the basic abstraction in Spark.
rdd是一个分布式的数据集,数据分散在分布式集群的各台机器上
A DataFrame is equivalent to a relational table in Spark SQL, and can be created using various functions in SQLContext
dataframe更像是一张关系型数据表,是一种spark独有的数据格式吧,这种格式的数据可以使用sqlcontext里面的函数
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 spark SQL和hive到底什么关系 数据集的最基本组成单位是指rdd的什么属性 hadoop,storm和spark的区别,比较 如何把Spark RDD中的内容按行打印出来 请简要描述一下hadoop,spark,mpi三种计算框架的特点以及分别适用于什么样的场景 Storm Spark Hadoop 这三个流行并行计算框架有什么不同 如何学习Spark大数据 如何理解spark中RDD和DataFrame的结构 RDD,DataFrame和DataSet的区别 谈谈RDD,DataFrame,Dataset的区别和各自的优势 为什么vivo手机没有小V vivo小v在哪里打开 oppo r9s怎么部分截屏 oppo r9s 截图功能怎么开启 oppor9s怎么截屏,截屏后怎么发 oppor9s怎么截长屏? oppo r9s如何超级截屏? OPPOR9s这么截屏? OPPOR9s截图怎么截 oppor9s怎么长截屏 大数据技术是学什么的? 大数据专业成热门,该如何转行做大数据分析师 肝硬化晚期救治疗方 rc.conf和rc.local的区别 写秋天的特点的作文 早期的肝硬化可以逆转吗 手机屏幕显示原理是什么? 太阳能电池板可以直接接在蓄电池上给蓄电池充电吗? 太阳能板可以直接给电瓶充电吗 太阳能电池板能给汽车电瓶充电吗?我只有一个太阳能面板,可以直接给电瓶冲吗?需要什么配件吗?? 太阳能板可以直接接电瓶吗? 太阳能电池板能直接给12v电瓶充电吗 太阳能电池板能直接给12v电瓶充电吗? 光伏太阳能板能不能给电瓶充电 太阳能板发的电能给电动车充电吗 12V的太阳能发电板可不可以直接接在12V的电瓶给它充电 太阳能板,能直接给电瓶充电吗? 可以用18V太阳能板直接给12V锂电池充电吗? 太阳能板怎样给电瓶车冲电? 太阳能板电压17.5伏能直接给十二伏电瓶充电吗?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com