gpt4 book ai didi

scala - Spark 的 toDS 与 DF

转载 作者:行者123 更新时间:2023-12-04 14:55:24 25 4
gpt4 key购买 nike

我知道可以使用 rdd.toDS 将 RDD 转换为数据集.然而也存在rdd.toDF .一个真的比另一个有什么好处吗?

在玩了一天的 Dataset API 之后,我发现几乎所有操作都会带我到 DataFrame(例如 withColumn )。使用 toDS 转换 RDD 后,我经常发现需要再次转换为 DataSet ,因为某些东西再次将我带到了 DataFrame 。

我是否错误地使用了 API?我应该坚持使用 .toDF 并且只在操作链的末尾转换为 DataSet 吗?或者早点使用toDS有什么好处?

这是一个具体的小例子

spark
.read
.schema (...)
.json (...)
.rdd
.zipWithUniqueId
.map[(Integer,String,Double)] { case (row,id) => ... }
.toDS // now with a Dataset API (should use toDF here?)
.withColumnRenamed ("_1", "id" ) // now back to a DataFrame, not type safe :(
.withColumnRenamed ("_2", "text")
.withColumnRenamed ("_2", "overall")
.as[ParsedReview] // back to a Dataset

最佳答案

Michael Armburst 很好地解释了数据集和数据帧的转变以及两者之间的区别。基本上在 spark 2.x 中,他们将数据集和数据帧 API 融合为一个,略有不同。
“DataFrame 只是通用行对象的 DataSet。当您不知道所有字段时,DF 就是答案”。
https://www.youtube.com/watch?v=1a4pgYzeFwE

关于scala - Spark 的 toDS 与 DF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com