Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从spark scala中的一行中获取多行_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

如何从spark scala中的一行中获取多行

如何从spark scala中的一行中获取多行,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我在spark中有一个数据帧,如下所示,我想转换不同行中关于第一列id的所有列 +----------------------------------+ | id code1 code2 code3 code4 code5 | +----------------------------------+ | 1 A B C D E | | 1 M N O P Q | | 1 P Q R S T

我在spark中有一个数据帧,如下所示,我想转换不同行中关于第一列id的所有列

+----------------------------------+
| id code1 code2 code3 code4 code5 |
+----------------------------------+
| 1 A B C D E                      |
| 1 M N O P Q                      |
| 1 P Q R S T                      |
| 2 P A C D F                      |
| 2 S D F R G                      |
+----------------------------------+
我希望输出如下格式

+-------------+
|     id code |
+-------------+
|     1 A     |
|     1 B     |
|     1 C     |
|     1 D     |
|     1 E     |
|     1 M     |
|     1 N     |
|     1 O     |
|     1 P     |
|     1 Q     |
|     1 P     |
|     1 Q     |
|     1 R     |
|     1 S     |
|     1 T     |
|     2 P     |
|     2 A     |
|     2 C     |
|     2 D     |
|     2 F     |
|     2 S     |
|     2 D     |
|     2 F     |
|     2 R     |
|     2 G     |
+-------------+
谁能帮我这里我将如何获得上述输出与火花和scala

df.select(col("id"),explode(concat_ws(",",Seq(col(code1),col("code2"),col("code3"),col("code4"),col("code5")))))
基本上,这个想法是先
concat
所有必需的列,然后
explode
it

使用,并且
drop
函数应该有您想要的输出

df.withColumn("code", explode(array("code1", "code2", "code3", "code4", "code5")))
    .drop("code1", "code2", "code3", "code4", "code5")

根据undefined_变量的定义,您只需使用
select

df.select($"id", explode(array("code1", "code2", "code3", "code4", "code5")).as("code"))

不,这不是你提到的上述问题的重复。这个问题与json格式无关。谢谢@ramesh,它的工作符合我的预期。。这是我一直在寻找的:)谢谢@DivasNikhra,如果答案有帮助,请接受并投票