【发布时间】:2018-08-08 19:38:19
【问题描述】:
我正在阅读一本关于 Apache Spark 的书,在比较 RDD 和 DataFrame 时,它有以下说法:
RDD 和 DataFrame 的关键区别在于 DataFrame 存储 有关数据的更多信息,例如数据类型和名称 列数,而不是 RDD。这允许 DataFrame 优化 处理比 Spark 转换和 Spark 更有效 对 RDD 进行处理的操作。
但是,在使用 Scala 玩弄 RDD 时,我注意到数据类型实际上是存储的。例如:
val acTuplesByAmount = acBalTuples.map{case (amount, accno) => (amount.toDouble, accno)}
acTuplesByAmount.collect()
res5: Array[(Double, String)] = Array((50000.0,SB10001), (12000.0,SB10002), (8500.0,SB10004), (5000.0,SB10005), (3000.0,SB10003))
如您所见,它记录了我们想要一个 Double 和一个 String 的事实。在我的地图之前,我想它可能是两个字符串。
那本书有错吗?或者 DataFrames 是否仍然具有更好的数据类型?
【问题讨论】:
标签: apache-spark apache-spark-sql