gpt4 book ai didi

amazon-web-services - 从 AWS Glue DynamicFrame 中的 array 中提取第一个值

转载 作者:行者123 更新时间:2023-12-04 10:12:49 24 4
gpt4 key购买 nike

我在 S3 中的 Json 结构如下。我已成功将其爬入数据目录表并将其导入到 DynamicFrame 中。

{
"ColumnA": "Value",
"ColumnB": [
"Value"
],
"ColumnC": "Value",
"ColumnD": "Value"
}

DynamicFrame 的架构
root
|-- columnA: string
|-- columnB: array
| |-- element: string
|-- columnC: string
|-- columnD: string

虽然 columnB 是数组类型,但其中只有 1 个值。我无法控制生成这些 JSON 文件的源,所以我必须使用这种格式。

我需要将其推送到具有以下架构的 Redshift 表。
+--------+-------+-------+-------+
| ColumnA|ColumnB|ColumnC|ColumnD|
+--------+-------+-------+-------+

虽然 A/C/D 列相当简单, 如何从 DynamicFrame 中的“ColumnB”数组中提取第一个值 能够写入 Redshift 表?

最佳答案

From Spark-2.4+:

使用 element_at 从数组中获取第一个值的函数

Example:

df=spark.createDataFrame([("value",["value"],"value","value")],["ColumnA","ColumnB","ColumnC","ColumnD"])
df.printSchema()
#root
# |-- ColumnA: string (nullable = true)
# |-- ColumnB: array (nullable = true)
# | |-- element: string (containsNull = true)
# |-- ColumnC: string (nullable = true)
# |-- ColumnD: string (nullable = true)

from pyspark.sql.functions import *

df.withColumn("ColumnB",element_at(col("ColumnB"),1)).show()
#+-------+-------+-------+-------+
#|ColumnA|ColumnB|ColumnC|ColumnD|
#+-------+-------+-------+-------+
#| value| value| value| value|
#+-------+-------+-------+-------+

For spark < 2.4:
#Using .getItem(0)

df.withColumn("ColumnB",col("ColumnB").getItem(0)).show()
#+-------+-------+-------+-------+
#|ColumnA|ColumnB|ColumnC|ColumnD|
#+-------+-------+-------+-------+
#| value| value| value| value|
#+-------+-------+-------+-------+

#using index
df.withColumn("ColumnB",col("ColumnB")[0]).show()
#+-------+-------+-------+-------+
#|ColumnA|ColumnB|ColumnC|ColumnD|
#+-------+-------+-------+-------+
#| value| value| value| value|
#+-------+-------+-------+-------+

关于amazon-web-services - 从 AWS Glue DynamicFrame 中的 array<string> 中提取第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61236538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com