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

从包含嵌套值的Spark列中提取值[重复]

邢星波
2023-03-14

这是我的 mongodb 集合的架构的一部分:

|-- variables: struct (nullable = true)  
|    |-- actives: struct (nullable = true)  
|    |    |-- data: struct (nullable = true)  
|    |    |    |-- 0: struct (nullable = true)  
|    |    |    |    |--active: integer (nullable = true)  
|    |    |    |    |-- inactive: integer (nullable = true)

我已经获取了集合并将其存储在Spark数据框中,现在正在尝试提取变量列中的最内层值。

df_temp = df1.select(df1.variables.actives.data)

这工作得非常好,我能够得到数据结构的内部结构。

+----------------------+  
|variables.actives.data|  
+----------------------+  
|  [[1,32,0.516165...|  
|  [[1,30,1.173139...|  
|  [[4,18,0.160088...|

然而,一旦我尝试进一步深入:

df_temp = df1.select(df1.variables.actives.data.0.active)

我得到一个无效的语法错误。

df _ temp = df1 . select(df1 . variables . actives . data . 0 . active)< br > ^
语法错误:无效语法

问题是我的内部字段的键的名称是一个数字,我找不到内部字段键的名称是数字的示例。

实现从数据帧中检索最内部值(活动和非活动)的目标的最佳方法是什么?

共有1个答案

郑星雨
2023-03-14

您可以尝试:

df_temp = df1.select(df1.variables.actives.data["0"].active)
 类似资料:
  • 我拥有的数据集充满了嵌套字段。例如 的输出给出了 9 列,其中第 4 列 (c4) 有 3 个子字段,c4 的第 1 列有 3 个子字段,依此类推。 格式看起来有点像这样 我想要一个数组数据结构的数组(然后可以展开为单个数组)。 只是为了让数据看起来更清晰: 当然,我可以编写一个解析程序,递归地搜索给定记录的子字段,并生成这种树结构(作为数组数组)。然而,我希望在Spark中有一个更简单、更高效的

  • 我将json数据流(从ConvertAvroToJSON处理器驱动)转义为: 我只需要“JSON”值,如下所示[unescapeJson之后]: $...*

  • 我定义了一个配置,其中包含每个表的列列表,用作dedup键 例如:配置1: 这些列需要用作重复数据消除键。这个列表是动态的,有些表中有1个值,有些表中有2或3个值 我想做的是从这个列表中建立一个键列 我如何使这个动态的列表适用于任意数量的列。我试过这么做 为了实现这一点,我必须将列表转换为Df,列表中的每个值都需要在单独的列中,我无法理解这一点。 试过这么做但没用 欢迎任何意见,谢谢

  • 我有这个json 我想生成两个变量,比如 它们在和 我读过这篇文章,但它只适用于地图,但我的json是嵌套json。我怎样才能得到结果?

  • 我有一个具有以下模式的Spark数据帧。 我想将其转换为另一个具有以下模式的DF 我已经编写了以下代码,但它不编译,并抱怨编码错误。 请建议正确的方法。