从Pyspark的RDD上的Map Function接受多个值

时间:2018-11-28 09:17:49

标签: python apache-spark pyspark

嗨,我正在尝试从地图函数返回多个值,但无法这样做。 这是我的例子- 我有一个数据框,其中有一个整数列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会抛出一条错误消息。请提出一种更简单的方法来实现这一目标。

0 个答案:

没有答案