Pyspark Dataframe GroupBy Количество каждый раз отличается - PullRequest
0 голосов
/ 18 сентября 2018

Я новичок в pyspark, поэтому я чувствую, что мне здесь не хватает чего-то простого и глупого, но мне не хватает этого.Я прочитал содержимое файла паркета в фрейм данных искры.Затем я группирую двоичный столбец и подсчитываю результаты.Числа разные каждый раз.Это проблема синхронизации данных между узлами искры или это как-то связано с отложенным выполнением или я просто упускаю какой-то базовый фундаментальный принцип искры?Я очень смущен этими результатами.

df = spark.read.parquet(input_file)
df = df.limit(2000)
print(df.count())
print(df.groupBy('STATUS').count().collect())
print(df.groupBy('STATUS').count().collect())
print(df.groupBy('STATUS').count().collect())

>>> 2000
>>> [Row(STATUS=0, count=1613), Row(STATUS=1, count=387)]
>>> [Row(STATUS=0, count=1528), Row(STATUS=1, count=472)]
>>> [Row(STATUS=0, count=1646), Row(STATUS=1, count=354)]

Ниже приведена схема df:

root
 |-- GRP_ID: long (nullable = true)
 |-- WEK_ID: long (nullable = true)
 |-- WEK_BGN_DT: string (nullable = true)
 |-- WEK_END_DT: string (nullable = true)
 |-- FEATURES: vector (nullable = true)
 |-- STATUS: long (nullable = true)

Я также должен отметить, что если я преобразую фрейм данных spark в pandas и получу счетчик, работает просто отлично:

dfp = df.toPandas()    
print(dfp['STATUS'][dfp['STATUS'] == 0].count())
print(dfp['STATUS'][dfp['STATUS'] == 1].count())
print(dfp['STATUS'][dfp['STATUS'] == 0].count())
print(dfp['STATUS'][dfp['STATUS'] == 1].count())
print(dfp['STATUS'][dfp['STATUS'] == 0].count())
print(dfp['STATUS'][dfp['STATUS'] == 1].count())

>>> 1494
>>> 506
>>> 1494
>>> 506
>>> 1494
>>> 506
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...