Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark(Java)-添加单个平均值作为新列_Java_Apache Spark - Fatal编程技术网

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)
    

在执行任何操作之前,您需要连接两个数据帧。Spark不知道如何将df1与df2联系起来。这似乎很乏味,因为最后我想
.unionAll()
将它们合并到一个df中,但在它们具有相同的列数之前,我无法这样做……我认为您试图解决的问题与啊有关
rand()*0+avgValue
从一个值生成一列数据真的很聪明。谢谢我会在周一测试,但我相信你,并接受你的答案;)