簡體   English   中英

在SPARK SCALA中按名稱獲取行類型結構的元素

[英]Get elements of type structure of row by name in SPARK SCALA

在Apache Spark中的DataFrame對象中(我使用的是Scala接口),如果我在其Row對象上進行迭代,是否有任何方法可以按名稱提取結構值?

我使用下面的代碼按名稱提取,但我面臨着如何讀取struct值的問題。

如果值是字符串類型,那么我們可以這樣做:

 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從頂層火花) Row是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM