在spark

时间:2017-09-12 05:47:24

标签: pyspark spark-dataframe

我有一个火花数据框( input_dataframe ),此数据框中的数据如下所示:

id              value
 1                a
 2                x|y|z
 3                t|u

我希望 output_dataframe ,管道分隔字段爆炸,它应如下所示:

id              value
 1                a
 2                x
 2                y
 2                z
 3                t
 3                u

请帮助我使用PySpark实现所需的解决方案。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我们可以先使用下面的函数拆分然后分解值列,

>>> l=[(1,'a'),(2,'x|y|z'),(3,'t|u')]
>>> df = spark.createDataFrame(l,['id','val'])
>>> df.show()
+---+-----+
| id|  val|
+---+-----+
|  1|    a|
|  2|x|y|z|
|  3|  t|u|
+---+-----+

>>> from pyspark.sql import functions as F
>>> df.select('id',F.explode(F.split(df.val,'[|]')).alias('value')).show()
+---+-----+
| id|value|
+---+-----+
|  1|    a|
|  2|    x|
|  2|    y|
|  2|    z|
|  3|    t|
|  3|    u|
+---+-----+