如何解决Pyspark将新记录添加到每一行 这应该做您想要的...
我正在使用Spark 2.3.1。我正在从json文件读取数据,并且有5条
行(年龄= 24,有效载荷ID = 1,工资= 2900)
我想在所有五条记录中添加一个新值,新值是这样的Dictionary格式
{'age_condition':True,'salary_condition':True}
所以,现在新的Row应该是这样的
行(年龄= 24,有效载荷ID = 1,薪水= 2900,结果= {'age_condition':True,'salary_condition':True})
解决方法
我不知道为什么要通过在数据框列中添加字典来使事情复杂化,您应该添加两个新的布尔类型的列age_condition
和salary_condition
。
这应该做您想要的...
from pyspark.sql.types import *
schema = StructType([StructField("dict",StructType([StructField("age_condition",BooleanType(),True),StructField("salary_condition",True)]),True)])
newDf = spark.createDataFrame([{'age_condition':True,'salary_condition':True}],schema=schema)
df = spark.read.json("/whatever/json/path")
df.crossJoin(newDf) #no of records is same as in df as no of records in newDf is 1
,
这种方式呢?请注意,Result
列被视为字符串类型,而不是dict。
import pyspark.sql.functions as f
from pyspark.sql.types import Row
row_list = [Row(age=24,payloadId=1,salary=2900)]
row_add = {'age_condition':True,'salary_condition':True}
spark.createDataFrame(row_list) \
.withColumn('Result',f.lit(str(row_add))) \
.collect()
[Row(age=24,salary=2900,Result="{'age_condition': True,'salary_condition': True}")]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。