Pyspark groupby генерирует несколько строк на выходе с ключом String groupby - PullRequest
0 голосов
/ 12 ноября 2019

Операция pyspark groupby не генерирует уникальные групповые ключи для больших наборов данных

Я вижу повторяющиеся ключи в конечном выводе.

 new_df = df.select('key','value') \
        .where(...) \
        .groupBy('key') \
        .count() 

Например, приведенный выше запрос возвращает несколько строк для столбца groupBy (ключ). Тип данных для столбца groupby ('key') - строка.

Я сохраняю выходные данные в CSV, выполняя

new_df.write.format("csv") \
        .option("header", "true") \
        .mode("Overwrite") \
        .save(CSV_LOCAL_PATH)

, например, выходные данные в CSV содержат повторяющиеся строки

key1, 10
key2, 20
key1, 05

Проверено в Spark 2.4.3 и 2.3. Есть дубликаты. Там нет разницы в ключах. Это происходит для нескольких ключей.

Когда я подсчитываю строки для определенных ключей, это дает 1.

new_df.select('key','total')\
 .where((col("key") == "key1"))\
 .count()

Я не уверен, что настройки пиарроу имеют какое-либо значение. Я бы включил это раньше. Я попытался включить и отключить pyarrow, но результат один и тот же.

spark.conf.set ("spark.sql.execution.arrow.enabled", "true")

1 Ответ

0 голосов
/ 12 ноября 2019

Я обнаружил, что проблема была при сохранении в CSV, который игнорирует пробелы. Добавление ниже параметров помогает решить эту проблему.

 .option("ignoreLeadingWhiteSpace", "false")\
 .option("ignoreTrailingWhiteSpace", "false")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...