开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:无类型转换_选择】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/690/detail/12067
有类型转换_transform
内容介绍:
一、transform 使用方式
二、transform 使用场景
一、transform 使用方式
transform 与前面学到的 flatMap、map、mapPartitions 十分相似。
//创建一个新方法,定义为 trans1
@Test
def trans1(): unit = {
//之所以单独学习 transform,是因为之前在学习 RDD 时没有学习该算子,而该算子在某些情境下有其优点。
val ds = spark.range(10)
//创建一个数据集 ds,在 SparkSession 中,有一叫作
spark.range 的方法。在该方法中若输入“10”,即会生成 0-9
的 10 个随机数,则所得的 ds 为 0、1、2、3、4、5、6、7、8、
9。
ds.transform(dataset => dataset.withColumn("double",
'id*2))
//此处的 transform 与前面所学的的 flatMap、map、
mapPartitions 均不相同。虽然四者均为转换类比的算子,但
transform 转换的是两个数据集,是对数据集的操作,而其他三个算子无论是一次给出一个分区的数据,还是一次给出一条数据都不会把整个数据集都进行转换。在 transform 获取到 dataset 之后,即可通过 withColumn 创建新的列 double
//withColumn("double",'id*2),此 API 在后面的内容中
会继续进行学习。
.show()
}
}
运行程序,运行结果(部分)如下:
可以发现输出结果无误。
withColumn 并非本节课的重点,本节课主要要求掌握 transform 是将一个 dataset 转为另一个 dataset。
二、transform 使用场景
Transform 相较于之前学过的 3 种算子,用途相对没有那么广泛,一般会应用于一些特殊的开发场景中,如 ds 了许多 dataset,即可使用 transform 来进行转换操作。