spark DataFrame中聚合函数中的count(*)和count(1)有什么区别 请给出实例的代码
时间: 2024-02-03 09:14:01 浏览: 257
大数据技术原理及应用课实验7 :Spark初级编程实践
在Spark DataFrame中,`count(*)`和`count(1)`都是用来统计行数的聚合函数,但是它们有一些区别。
`count(*)`会统计所有行的数量,包括所有的NULL行,而`count(1)`则不会统计NULL行,因为它只是简单地计算行的数量,不需要关心具体每行的数据。
下面是一个示例代码,演示了`count(*)`和`count(1)`的区别:
```python
from pyspark.sql.functions import count
# 创建一个DataFrame
data = [("Alice", 25), ("Bob", None), ("Charlie", 30), (None, None)]
df = spark.createDataFrame(data, ["name", "age"])
# 使用count(*)统计行数
df.select(count("*")).show() # 输出:+--------+ |count(1)| +--------+ | 4| +--------+
# 使用count(1)统计行数
df.select(count(1)).show() # 输出:+--------+ |count(1)| +--------+ | 3| +--------+
```
从上面的输出可以看出,`count(*)`统计了所有行,包括NULL行,而`count(1)`只统计了非NULL行。
阅读全文