gpt4 book ai didi

scala - 在SPARK SCALA中按名称获取行类型结构的元素

转载 作者:行者123 更新时间:2023-12-01 23:11:19 25 4
gpt4 key购买 nike

在 Apache Spark 的 DataFrame 对象中(我使用的是 Scala 接口(interface)),如果我正在迭代它的 Row 对象,有没有办法按名称提取结构值?

我正在使用下面的代码按名称提取,但我在如何读取 struct value 方面遇到问题。

如果值是字符串类型,那么我们可以这样做:

 val resultDF=joinedDF.rdd.map{row=> 
val id=row.getAs[Long]("id")
val values=row.getAs[String]("slotSize")
val feilds=row.getAs[String](values)
(id,values,feilds)
}.toDF("id","values","feilds")

但在我的情况下,值具有以下架构
v1: struct (nullable = true)
| |-- level1: string (nullable = true)
| |-- level2: string (nullable = true)
| |-- level3: string (nullable = true)
| |-- level4: string (nullable = true)
| |-- level5: string (nullable = true)

鉴于该值具有上述结构,我应该用什么替换此行以使代码正常工作。
  row.getAs[String](values)

最佳答案

您可以访问 struct元素我第一次提取另一个 Row (结构被建模为另一个 Row 在 spark 中)来自顶层 Row像这样:

斯卡拉实现

val level1 = row.getAs[Row]("struct").getAs[String]("level1")

Java 实现
 String level1 = f.<Row>getAs("struct).getAs("level1").toString();  

关于scala - 在SPARK SCALA中按名称获取行类型结构的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526054/

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