Spark(Java)-添加单个平均值作为新列
我有两个数据帧,Spark(Java)-添加单个平均值作为新列,java,apache-spark,Java,Apache Spark,我有两个数据帧,df1和df2,我想在第二个数据帧中添加一个新列。这个新列应该是来自第一个数据帧的列的平均值。大概是这样的: df1 df2 df2 userid count value userid count userid count value 11 2 5 10 1 10 1 5 22 3 4
df1
和df2
,我想在第二个数据帧中添加一个新列。这个新列应该是来自第一个数据帧的列的平均值。大概是这样的:
df1 df2 df2
userid count value userid count userid count value
11 2 5 10 1 10 1 5
22 3 4 20 1 ======> 20 1 5
33 5 6 30 1 30 1 5
我正在努力
df2 = df2.withColumn("value", avg(df1.col("value")));
这是行不通的。我该怎么做?
谢谢大家! 类似于
withColum()应该有一个与日期框相关的列,这样您就可以进行转换:
- 校准平均值
- 添加新列时,将原始值设置为0,然后添加平均值
import org.apache.spark.sql.functions._ val avgValue = df1.select(avg(df1("value"))).collect()(0).getDouble(0) df2 = df2.withColumn("value", rand() * 0 + avgValue)
.unionAll()
将它们合并到一个df中,但在它们具有相同的列数之前,我无法这样做……我认为您试图解决的问题与啊有关rand()*0+avgValue
从一个值生成一列数据真的很聪明。谢谢我会在周一测试,但我相信你,并接受你的答案;)