我有一个火花数据框( 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实现所需的解决方案。任何帮助将不胜感激
答案 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|
+---+-----+