Python 将字段追加到pyspark中的行

Python 将字段追加到pyspark中的行,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我有一个DataFrame并在其上运行flatMap。 在map函数中,我试图将一个新字段附加到给定行 我该怎么做 def mapper(row): value = 0 #some computation here row.append(newvalue = value) #??? something like that return row data = sqlContext.jsonFile("data.json") mapped = data.flatMap(ma

我有一个
DataFrame
并在其上运行
flatMap
。 在map函数中,我试图将一个新字段附加到给定行

我该怎么做

def mapper(row):
    value = 0 #some computation here
    row.append(newvalue = value) #??? something like that
    return row

data = sqlContext.jsonFile("data.json")
mapped = data.flatMap(mapper)
#do further mappings with the new field

我想出来了,但我不确定这是不是正确的方法

def mapper(row):
    from pyspark.sql import Row
    value = 0 #some computation here
    data = row.asDict()
    data["newvalue"] = value
    return Row(**data)

在你的带领下,我创造了一些更灵活的东西,我希望它能有所帮助:

from pyspark.sql import Row

def addRowColumn(row, **kwargs):
    rowData = row.asDict()
    for column in kwargs:
        rowData[column] = kwargs[column]
    return Row(**rowData)
要在一行中使用它,只需如下调用:

modifiedRow = addRowColumn(originalRow, test="Hello Column!")

要在整个数据集上运行,只需创建一个udf来更改每一行。

我认为这是错误的,因为这样做会降低列的基本顺序。