我有一个具有如下结构的数据框:
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"))
您应该只将
dataframe
和npaNumber
列一起使用。