PySpark:如何从嵌套在数组内部结构中的结构中提取变量?

用户名

以下是一个玩具示例,它是我的实际数据架构的子集。为了简洁起见,我将其缩写。

我希望建立一个包含3个字段PySpark数据框中:IDType而且TIMESTAMP我会再保存为配置单元表。我正在努力与PySpark代码提取相关的列。

 |-- Records: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- FileID: long (nullable = true)
 |    |    |-- SrcFields: struct (nullable = true)
 |    |    |    |-- ID: string (nullable = true)
 |    |    |    |-- Type: string (nullable = true)
 |    |    |    |-- TIMESTAMP: string (nullable = true)

到目前为止,我想我的解决方案应该类似于:

from pyspark.sql.functions import col, explode

df.withColumn("values", explode("values")).select(
  "*", col("values")["name"].alias("name"), col("values")["id"].alias("id")
)

但是,以上解决方案并未解决用例的额外嵌套,因此我无法弄清所需的其他语法。

大卫·威洛

在PySpark中,您可以使用点表示法访问结构的子字段。所以这样的事情应该工作:

  1. 爆炸阵列
  2. 使用点表示法获取struct的子字段
(
  df.withColumn("values", explode("Records"))
  .select(
    col("values.SrcFields.ID").alias("id"), 
    col("values.SrcFields.Type").alias("type"), 
    col("values.SrcFields.TIMESTAMP").alias("timestamp")
  )
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在嵌套结构中声明内部结构变量而不引用外部结构

来自分类Dev

如何访问嵌套在结构中的结构

来自分类Dev

C中的内部结构

来自分类Dev

如何展平嵌套列表以保持内部结构

来自分类Dev

C中的结构内部结构问题

来自分类Dev

如何对嵌套在结构数组C中的结构数组进行排序

来自分类Dev

试图获取数组内部结构的值

来自分类Dev

如何从结构数组中提取数组?

来自分类Dev

如何从结构数组中提取数组?

来自分类Dev

声明内部结构?

来自分类Dev

如何从嵌套在数组对象内部的数组中删除重复的对象值?

来自分类Dev

内部结构中的尾随填充

来自分类Dev

C:寻址链表中的内部结构

来自分类Dev

如何从嵌套在 mongoDB 文档中的文档数组中提取某些元素?

来自分类Dev

Pyspark从结构化流中的地图数组中提取值

来自分类Dev

在Swift中访问数组内部结构中的字符串

来自分类Dev

从结构数组中提取行

来自分类Dev

遍历内部结构的链表

来自分类Dev

realloc char* 内部结构

来自分类Dev

Java、JVM 内部结构

来自分类Dev

查询通知内部结构

来自分类Dev

内部结构消失后的分段错误(变量崩溃)

来自分类Dev

Matlab:更改数组内部结构的字段的值

来自分类Dev

函数内部结构数组的全局范围-Swift

来自分类Dev

VertexBuffer如何知道其内部结构的类型?

来自分类Dev

如何修改指向void函数内部结构的指针

来自分类Dev

Go中内部结构文字的正确语法是什么?

来自分类Dev

在C ++中访问并集内部结构的问题

来自分类Dev

类内部结构中的字符串