如何在没有自定义案例类的情况下读取包含大量列到数据集的镶木地板文件?

时间:2016-08-16 16:38:31

标签: scala apache-spark apache-spark-dataset

我想使用数据集而不是数据帧。

我正在阅读一个镶木地板文件,并希望直接推断出这些类型:

val df: Dataset[Row] = spark.read.parquet(path)

我不想Dataset[Row]而是Dataset

我知道我可以这样做:

val df= spark.read.parquet(path).as[myCaseClass]

但是,我的数据有很多列!所以,如果我可以避免写一个案例类,那就太棒了!

1 个答案:

答案 0 :(得分:2)

为什么要使用Dataset?我认为这是因为你不仅有免费的架构(无论如何都有结果DataFrame),但因为你有一个类型安全的架构。

您的数据集需要Encoder,并且需要一个代表您的数据集的类型,因此需要一个模式。

您将select列添加到合理的数字并使用as[MyCaseClass],或者您应该接受DataFrame提供的内容。