在 Apache Spark 中,什么情况下数据集优先于数据帧,反之亦然?

Met*_*ata 8 dataframe apache-spark pyspark apache-spark-dataset

我一直在寻找任何链接、文档或文章来帮助我了解我们什么时候应该选择数据集而不是数据框,反之亦然?

我在互联网上找到的都是标题,when to use a Dataset但是当打开时,它们只是指定了 Dataframe 和 Dataset 之间的差异。有很多链接只是列出了场景名称的差异。

stackoverflow 上只有一个问题具有正确的标题,但即使在该答案中,databricks 文档链接也不起作用。

我正在寻找一些信息,可以帮助我从根本上理解我们何时选择数据集,或者在什么情况下数据集优于数据帧,反之亦然。如果没有答案,即使是可以帮助我理解的链接或文档也是值得赞赏的。

Phu*_*kul 1

您正在寻找的页面已移至此处。根据会议内容,总而言之,Dataset API 仅适用于 Scala(和 Java),并且它结合了 RDD 和 Dataframe 的优点:

  1. 函数式编程 (RDD)
  2. 类型安全 (RDD)
  3. 关系(数据框)
  4. Catalyst 查询优化(数据帧)
  5. Tunsten 直接/打包 RAM(数据帧)
  6. JIT 代码生成(数据帧)
  7. 排序/洗牌而不反序列化(数据帧)

此外,数据集消耗更少的内存,并且可以在编译时捕获分析错误,同时在运行时缓存数据帧。这也是一篇好文章

因此,答案是,当您使用 Scala 或 Java 进行编码并希望使用函数式编程并通过所有数据帧功能节省更多内存时,您最好使用数据集。