嗨,我正在尝试从地图函数返回多个值,但无法这样做。
这是我的例子-
我有一个数据框,其中有一个整数列col1
和一个String列col2
sqlDF = sqlDF.select('col1,'col2')
现在,对于数据框中的每一行,我想解析并返回多个值
def mapper(row):
for x in row.col2.split()
return(row.col1, x)
schema = StructType( [
StructField('col1', IntegerType()),
StructField('col2', StringType())
])
sample = sqlDF.rdd.map(mapper)
sqlDF2 = spark.createDataFrame(sample,schema)
sqlDF2.show()
样本输入
sqlDF
拥有一条记录,如下所示-
12345,'words can be split'
sqlDF2
的示例输出
12345,words
12345,can
12345,be
12345,split
如果我使用flatMap
而不是map
,则createDataFrame
会抛出一条错误消息。请提出一种更简单的方法来实现这一目标。