我有一个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实现所需的解决方案。任何帮助将不胜感激
我们可以首先拆分,然后使用以下功能爆炸值列,
>>> 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|
+---+-----+