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来更改每一行。我认为这是错误的,因为这样做会降低列的基本顺序。