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

How to read a parquet file with lots of columns to a Dataset without a custom case class?

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

我正在读取镶木地板文件并想直接推断类型:

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

我不想要 Dataset[Row],而是 Dataset

我知道我可以做类似的事情:

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

但是,我的数据有很多列!所以,如果我能避免写案例 class 那就太好了!

你为什么想和 Dataset 一起工作?我认为这是因为您不仅将免费获得架构(无论如何您都会得到结果 DataFrame),而且因为您将拥有类型安全的架构。

您的数据集需要有一个 Encoder,并且要拥有它,您需要一个能够代表您的数据集和架构的类型。

要么你 select 你的专栏数量合理并使用 as[MyCaseClass] 要么你应该接受 DataFrame 提供的内容。