在sparkscala中转换Dataframe

7tofc5zh  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(372)

我有如下形式的Dataframe(df):

+-----+-----   +
|id   |items   |
+-----+-----   +
|   0 |  item1 |
|   1 |  item2 |
+-----+-----   +

这里第一列id是int,第二列items是struct类型。假设项目如下所示:

item1
        |-a
        |-b
        |-c
        |-d

我想要窗体的结果表

+-----+-----   +
   |id   |col2   |
   +-----+-----   +
   |   0 |  a    |
   |   0 |  b    |
   |   0 |  c    |
   |   0 |  d    |
   |   1 |  a    |
   |   1 |  b    |
   |   1 |  c    |
   |   1 |  d    |
   +-----+-----   +

我想为每一列展开结构?
怎么做?

67up9zun

67up9zun1#

这段代码可能会解决您的问题:

df.rdd.flatMap{row=>
val id=row.getInt(0)
val arrayOfString=row.getAs[Array[String]](1)
arrayOfString.map(value=>(id,value)
}.toDF("id","col2")

注意:此代码未经测试!

相关问题