暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

对开发者友好的Apache Spark结构化API:Dataframe 和 Datasets

原创 不言 2022-09-19
306

这是关于Spark结构化API Dataframe & Datasets系列博客的第二部分。在第一部分中,我们介绍了Dataframe,如果你是Spark的新手,我建议你先看看那篇博客。在这篇博客中,我们将介绍Spark DatasetsAPI,让我们开始吧。

Dataset API

数据集是两个特性的结合:typeduntyped的API,如图所示:

图片.png

通过比较Dataframe来更好地理解Datasets,Scala中的Dataframe是一个通用对象集合的别名,即Datasets[Row],其中Row是泛型,可以容纳不同类型的字段;另一方面,Datasets文档是这样说的:

一个拥有强类型的领域特定对象集合,可以使用函数式或关系操作进行并行转换。每个Dataset [在Scala中]有一个untyped 的视图,称为Dataframe。

如何创建Dataset?

由于Dataset是强类型,首先需要了解的是schema。也就是数据类型。在Scala中创建Dataset的最简单方法是使用case类来推断schema。例子如下:

String,cca2: String, cca3: String, cn: String, latitude: Double,longitude: Double, scale: String, temp: Long, humidity: Long, c02_level: Long, lcd: String, timestamp: Long) val ds = spark.read .json("dbfs:/FileStore/iot_device.json") .as[IoTDeviceData] ds.show(5, false) (Image2)

https://i0.wp.com/blog.knoldus.com/wp-content/uploads/2022/06/Image_2-1.png?ssl=1

Dataset操作

我们可以在Dataframe上执行的相同的转换和操作。让我们看几个例子:

从一个过滤器的转换开始

val filteredDS = ds.filter(col => col.temp > 30 && col.humidity > 70) filteredDS.show() (Image3)

上述实现为我们提供了Dataframe和Dataset api之间的另一个区别,因为 Dataset api中的过滤器转换是一个重载方法的过滤器 (func: (T) >Boolean): Dataset[T],接受lambda函数,func: (T) > Boolean 作为它的参数。

而在Dataframe API中,filter()的条件表示为类似sql的DSL操作。

Dataframe和Dataset在b/w的区别

如果你读过我之前关于Dataframe的博客,在这篇博客中你一定想知道使用场景,一起看看:

  • 想要严格的编译类型安全,那么就使用Dataset。
  • 项目需要高级表达式,如过滤器、映射、聚合或SQL查询,那么你可以选择同时使用Dataframe和Dataset。
  • 想利用并受益于Tungsten的高效序列化编码器,使用Dataset。
  • 想高效利用空间和速度,使用Dataframe。
  • 想在编译时而不是在运行时捕获错误,那么在下图的基础上你可以选择你的API。

图片.png

结论

以上是Spark结构化API的第一部分,我们已经涵盖了Dataset的所有基础知识。如果你正在阅读这个总结,感谢你能坚持到博客的最后,如果你喜欢我的文章,点击这里查看我更多的博客。

参考

https://docs.databricks.com/getting-started/spark/datasets.html

原文标题:Apache Spark’s Developers Friendly Structured APIs: Dataframe and Datasets
原文作者: Raviyanshu
原文地址:https://blog.knoldus.com/apache-sparks-structured-apis-dataframe-and-datasets/

最后修改时间:2022-09-19 20:57:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论