小编sat*_*117的帖子

在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")
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,值具有以下架构

v1: struct (nullable = true)
     |    |-- level1: string (nullable = true)
     |    |-- level2: string (nullable = true)
     |    |-- level3: string (nullable = true)
     |    |-- level4: string (nullable = true)
     |    |-- level5: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

如果值具有上述结构,我应该用什么来代替这一行来使代码工作.

  row.getAs[String](values)
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

2
推荐指数
1
解决办法
6479
查看次数

Spark Scala中的数据转换

我有以下数据帧

+-----+-----+-----+ .......+-------+
|item1|item2|item3|........| itemN |
+-----+-----+-----+........|-------+
|   v1|   v2|   v3|........| vN----+
|   v4|   v5|   v6|........| v2N---+
+-----+-----+-----+........|-------+ 
Run Code Online (Sandbox Code Playgroud)

这里item1,item2和item3是列名,表由1行v1,v2,v3组成.

我想把它变成

colA   colB
item1    v1
item2    v2
item3    v3
 .        .
 .        .
 .        . 
Run Code Online (Sandbox Code Playgroud)

这里有两列,比如说colA和colB,行如图所示.

如何使用scala在spark中进行这种转换?

sql scala apache-spark

0
推荐指数
1
解决办法
660
查看次数

标签 统计

apache-spark ×2

scala ×2

apache-spark-sql ×1

sql ×1