Apache spark 如何应用函数修改列值?(Pyspark 2.4.5-数据块)
我的目标是绘制每个范围的地图,并将其绘制到中间部分(15000-25000->20000) 我整理了数据,并将其浓缩到本专栏。 如何在列本身上应用所需的转换\n将结果映射到另一列?Apache spark 如何应用函数修改列值?(Pyspark 2.4.5-数据块),apache-spark,pyspark,Apache Spark,Pyspark,我的目标是绘制每个范围的地图,并将其绘制到中间部分(15000-25000->20000) 我整理了数据,并将其浓缩到本专栏。 如何在列本身上应用所需的转换\n将结果映射到另一列? 我在互联网上找不到任何关于pyspark的可理解数据。使用Spark高阶函数聚合自Spark-2.4 例如: df=spark.createDataFrame([('15000-25000',)],['jobsalary']) from pyspark.sql.functions import * df.with
我在互联网上找不到任何关于pyspark的可理解数据。使用Spark高阶函数
聚合自Spark-2.4
例如:
df=spark.createDataFrame([('15000-25000',)],['jobsalary'])
from pyspark.sql.functions import *
df.withColumn("mid",expr('cast(aggregate(cast(split(jobsalary,"-") as array<int>),0,(acc,x) -> acc+x)/size(cast(split(jobsalary,"-") as array<int>)) as int)')).show()
#+-----------+-------+
#| jobsalary| mid |
#+-----------+-------+
#|15000-25000| 20000|
#+-----------+-------+
df=spark.createDataFrame([('15000-25000',)],['jobsalary'])
从pyspark.sql.functions导入*
df.withColumn(“mid”,expr('cast(聚合(转换(拆分(jobsalary,“-”)为数组),0,(acc,x)->acc+x)/size(转换(拆分(拆分(jobsalary,“-”)为数组))为int)show()
#+-----------+-------+
#|工作工资|中等|
#+-----------+-------+
#|15000-25000| 20000|
#+-----------+-------+
用于spark
df.withColumn('id',monotonically_increasing_id()).\
withColumn('val',explode('jobsalary')).\
groupBy('id').agg(avg('val').alias('mid')).\
drop('id').show()
#+-----------+-------+
#| jobsalary| mid |
#+-----------+-------+
#|15000-25000| 20000|
#+-----------+-------+