Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Apache spark 结合窗口函数计算Spark DF列中的特定值_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark 结合窗口函数计算Spark DF列中的特定值

Apache spark 结合窗口函数计算Spark DF列中的特定值,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,样本DF: var some_df = Seq( ("A", "no"), ("B", "yes"), ("B", "yes"), ("B", "no") ).toDF( "user_id", "phone_number") 一些_df.show() 我试图计算每个用户id的“是”数 代码: 我的作品: +-------+------+ |user_id|my_col| +-------+------+ | B| 3| | B| 3| |

样本DF:

var some_df = Seq(
("A", "no"),
("B", "yes"),
("B", "yes"),
("B", "no")
).toDF(
"user_id", "phone_number")
一些_df.show()

我试图计算每个用户id的“是”数

代码:

我的作品:

 +-------+------+
 |user_id|my_col|
 +-------+------+
 |      B|     3|
 |      B|     3|
 |      B|     3|
 |      A|     1|
 +-------+------+
预期OP:

User Id .   my_col
 B .         2
 A .         0

任何关于我哪里出错的建议都将非常有用

因为您正在减少数据帧,请使用
groupBy.agg
而不是窗口函数;在这里,您将
phone\u number
列与
yes
字符串(
$“phone\u number”==“yes”
)进行比较,并将结果转换为整数,该整数将
true
转换为
1
,将
false
转换为
0
,然后我们通过
对列求和来计算
1
s:

some_df.groupBy("user_id").agg(
    sum(($"phone_number" === "yes").cast("integer")).as("my_col")
).show
+-------+------+
|user_id|my_col|
+-------+------+
|      B|     2|
|      A|     0|
+-------+------+
User Id .   my_col
 B .         2
 A .         0
some_df.groupBy("user_id").agg(
    sum(($"phone_number" === "yes").cast("integer")).as("my_col")
).show
+-------+------+
|user_id|my_col|
+-------+------+
|      B|     2|
|      A|     0|
+-------+------+