Dataset是结构化API的基本类型。Dataset是具有严格的Java虚拟机语言特性,仅与Scala和Java一起使用。
一、何时使用Dataset
-
当你要执行的操作无法使用DataFrame操作表示时
-
如果需要类型安全,并且愿意牺牲一定性能来实现它
二、创建DataSet
- Java编码器
import org.apache.spark.sql.Encoders;
public class Flight implements Serializable {
String destCountryName;
String originCountryName;
Long count;
}
Dataset<Flight> flights = spark.read().parquet("path").as(Encoders.bean(Flight.class));
- Scala Case类
case class Flight (destCountryName: String, originCountryName: String, count: Bigint)
val flightDf = spark.read.parquet("path")
val flights = flightsDF.as[Flight]
三、动作操作
四、转换操作
Dataset上的转换操作和DataFrame上的转换操作相同。
五、连接
连接操作的用法与DataFrame一样,但是DataSet还提供了更复杂的方法,joinWith。
joinWith大致等同于一个Co-group,将两个Dataset整合成一个,每一列都表示一个Dataset。并可以相应地进行操作
网友评论