spark收集为Array [T]而不是数据帧中的Array [Row]

Geo*_*ler 2 apache-spark apache-spark-sql spark-dataframe apache-spark-dataset

我可以使用RDD API收集这样的列.

df.map(r => r.getAs[String]("column")).collect
Run Code Online (Sandbox Code Playgroud)

但是,由于我最初使用数据集,我宁愿不切换API级别.一个简单的df.select("column).collect返回一个Array[Row].flatten运营商不再起作用.我怎样Array[T e.g. String]直接收藏?

Lok*_*dav 6

使用数据集(Spark版本> = 2.0.0),您只需将数据帧转换为数据集然后收集它.

df.select("column").as[String].collect()
Run Code Online (Sandbox Code Playgroud)

会返回一个数组[String]

  • 好的。这很好用。但是为什么不能从数据集的模式中自动推断出类型呢? (2认同)