我有一个具有如下结构的数据框:

root
 |-- npaDetails: struct (nullable = true)
 |    |-- additionalInformation: struct (nullable = true)
 |    |-- npaStatus: struct (nullable = true)
 |    |-- npaDetails: struct (nullable = true)
 |-- npaHeaderData: struct (nullable = true)
 |    |-- npaNumber: string (nullable = true)
 |    |-- npaDownloadDate: string (nullable = true)
 |    |-- npaDownloadTime: string (nullable = true)

我想从数据框中的所有行中检索所有npaNumber

我的方法是遍历数据帧中的所有行,以便为每一行提取存储在npaHeaderData字段中npaNumber列中的值。因此,我编写了以下几行代码:
parquetFileDF.foreach { newRow =>

  //To retrieve the second column
  val column = newRow.get(1)

  //The following line is not allowed
  //val npaNumber= column.getAs[String]("npaNumber")

  println(column)

}

每次迭代中打印的列内容如下:

[207400956,27FEB17,09.30.00]

但是column的类型为Any,我无法提取其任何字段。谁能告诉我我做错了什么,或者应该采取什么方法代替这个?

谢谢

最佳答案

如果您只想提取npaNumber,则可以

parquetFileDF.select($"npaHeaderData.npaNumber".as("npaNumber"))

您应该只将dataframenpaNumber列一起使用。

09-08 05:43