Python 3.x Spark DF:将阵列拆分为多行

Python 3.x Spark DF:将阵列拆分为多行,python-3.x,apache-spark,pyspark,Python 3.x,Apache Spark,Pyspark,我使用mongodata创建了spark数据帧(在使用Python笔记本的databricks中) 我需要将此数据帧转换为 我如何才能做到这一点?这里有一个建议的解决方案。在导出到Spark之前,可以使用MongoDB中的$concatarray将sal字段组织成数组。然后,像这样运行 #df #+---+-----+------------------+ #| id|empno| sal| #+---+-----+------------------+ #|

我使用mongodata创建了spark数据帧(在使用Python笔记本的databricks中)

我需要将此数据帧转换为


我如何才能做到这一点?

这里有一个建议的解决方案。在导出到Spark之前,可以使用MongoDB中的
$concatarray
sal字段组织成数组。然后,像这样运行

#df
#+---+-----+------------------+
#| id|empno|               sal|
#+---+-----+------------------+
#|  1|  101|[1000, 2000, 1500]|
#|  2|  102|      [1000, 1500]|
#|  3|  103|      [2000, 3000]|
#+---+-----+------------------+

import pyspark.sql.functions as F

df_new = df.select('id','empno',F.explode('sal').alias('sal'))

#df_new.show()
#+---+-----+----+
#| id|empno| sal|
#+---+-----+----+
#|  1|  101|1000|
#|  1|  101|2000|
#|  1|  101|1500|
#|  2|  102|1000|
#|  2|  102|1500|
#|  3|  103|2000|
#|  3|  103|3000|
#+---+-----+----+


能否添加.printSchema()的输出?这个
sal
列只是一个有新行的字符串?如果
sal
列条目是数组,你可以尝试
pyspark.sql.functions.explode
。你可以添加如何创建数据框。@Mahesh Gupta``spark.read.format(“com.mongodb.spark.sql.DefaultSource”).option(“uri”,constring)。load()`@chlebek,是stringtype