当前位置: 首页 > 知识库问答 >
问题:

Spark Dataframe-如何从行中的列获取特定字段

仉昱
2023-03-14

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

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) 
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)

}

但是是Any类型,我无法提取它的任何字段。有人能说出我做错了什么,或者我应该遵循什么方法来代替这个吗?

谢谢

共有1个答案

长孙泉
2023-03-14

如果您只想提取npanumber,那么您可以

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

您应该只有npanumber列的dataframe

 类似资料:
  • 问题内容: 我有几个领域的大型语料库的索引。这些字段中只有一个包含文本。我需要基于此字段从整个索引中提取唯一单词。有谁知道我如何在Java中使用Lucene做到这一点? 问题答案: 您正在寻找术语向量(字段中所有单词的集合以及每个单词的使用次数,不包括停用词)。您将对索引中的每个文档使用IndexReader的getTermFreqVector(docid,field),并在其中填充。 替代方法是

  • 问题内容: 说我有一个对象列表,其中包含两个字段和,均为String类型。 如果有可能,如何在不迭代列表的情况下获取所有值的列表? 问题答案: 对象是对内存地址的引用。然后,该对象的字段是指向其他内存地址的其他引用。因此,对象列表是引用列表。因此,列表不可能直接访问对象字段(由引用给出的引用)。最简洁的答案是不。 注意:无论如何,您都会找到可以实现所需功能的API,但该API仍在内部循环。

  • 问题内容: 有什么方法可以简化此代码,以获取提供的某一列的索引以获取特定行的索引吗?在这种情况下,索引将为,因为我要遍历第一列直到找到“ A”。感觉应该对此有一个linq解决方案,但我无法弄清楚。 问题答案: 如果使用DataTableExtensions.AsEnumerable()方法,则可以使用LINQ查询您的DataTable。然后,您可以用来确定给定谓词的索引:

  • 当我打印我的API响应时,它给出了下面的xml作为响应:

  • 我对编程很陌生,我想做一个程序,用不同的变量发出12张卡片,然后将每张完整的卡片存储在某个地方供以后使用: N=Number(卡片上的数字,可以从1到3) C=Color(卡片是什么颜色,绿色、蓝色或红色) F=Form(有3种形式:蛇、时钟和圆) R=Fill(可以是满的、半的或空的) 这是我到目前为止得到的: