TGViewer
дата инженеретта дата инженеретта @data_engineerette · 3.43K subscribers
Post #115 1.05K
count(), F.count(), F.countDistinct(), distinct()

В спарке есть несколько функций count, которые меня вначале путали, и тут я хочу расставить все точки над i.

1️⃣ count() - это действие
Оно запустит весь пайплайн расчетов и выведет на экран одно число - количество строк в датафрейме:
df.count()


Также можно использовать в агрегации, но нельзя поменять название столбца (будет count):
df.groupBy('category')
.count()
.orderBy('count')
.show()


2️⃣ F.count() - это трансформация, агрегирующая функция
df.select(F.count('id')).show()


В отличие от первого способа в агрегации можно поменять название столбца:
df.groupBy('category')
.agg(F.count('id').alias('cnt'))
.orderBy('cnt')
.show()


Отличия count() и F.count():
# результат - датафрейм с одной ячейкой
df1.select(F.count('id')).show()
# +---------+
# |count(id)|
# +---------+
# | 3|
# +---------+

# результат - число
df1.select('id').count()
# 3

3️⃣ F.countDistinct() - тоже агрегирующая функция
df.select(F.countDistinct('id')).show()


Тут вариант агрегации только один, потому что df.countDistinct() не существует:
df.groupBy('category')
.agg(F.countDistinct('id'))
.show()


При этом в спарке есть еще функция distinct(), которая тоже вносит некую путаницу.

Отличия distinct().count() и F.countDistinct():
# результат - датафрейм с одной ячейкой
df1.select(F.countDistinct('id')).show()
# +------------------+
# |count(DISTINCT id)|
# +------------------+
# | 2|
# +------------------+

# результат - число
df1.select('id').distinct().count()
# 2


#spark
  • ❤ 7
  • 🔥 5
  • 🌚 1
More from @data_engineerette
  1. Oct 2, 2026Lance Недавно ковырялась в инструменте для обслуживания таблиц Apache Amoro и наткнулась н…
  2. Sep 30, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  3. Sep 25, 2026Как прошла SmartData 2026? Я вот перечитываю свои впечатления от прошлого года и понимаю,…
  4. Sep 24, 2026Исследование data-people Тут ребята из DevCrowd запустили ежегодное исследование специалис…
  5. Sep 15, 2026Каким должен быть хороший DE? Меня однажды спросили на собесе: 🤩Какие 3 качества важны дл…
  6. Sep 12, 2026Mermaid-диаграммы Наконец-то дошли руки поковыряться в mermaid-диаграммах, это что за имба…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →