dropDuplicates () не работает с pyspark, но работает с искрой Java - PullRequest
3 голосов
/ 26 октября 2019

У меня есть одно преобразование, единственная цель которого - удалить дубликаты. При использовании PySpark 2.x результирующий вывод удаляет некоторые дубликаты, но не все. При использовании Apache Spark Java 2.x результирующий вывод будет таким, как ожидается, со всеми удаленными дубликатами.

В настоящее время я запускаю Spark на YARN. Мой набор данных составляет примерно 125 миллионов строк на 200 столбцов. Ожидается, что некоторые столбцы содержат нулевые значения. Для моего случая использования у меня действительно есть чистые дубликаты (причины этого выходят за рамки). До сих пор я пытался:

  1. dropDuplicates (df.columns) / dropDuplicates (), PySpark -> удаляет некоторые, но не все дубликаты
  2. different (), PySpark -> dropнекоторые, но не все дубликаты, количество строк отличается от 1.
  3. dropDuplicates ([primary_key_I_created]), PySpark -> работает
  4. dropDuplicates (dataset.columns ()), Apache Spark Java -> работает

Я проверил физические планы, и метод 1 и метод 4 дают одинаковые планы. Они примерно таковы:

+-HashAggregate(keys=[column_1, column_2, .... 198 more fields], functions=[], output=[column_1, column_2, ... 198 more fields]
  +-Exchange hashpartitioning(column_1, column_2, ... 198 more fields)
    +-HashAggregate(keys=[column_1, column_2, .... 198 more fields], functions=[], output=[column_1, column_2, ... 198 more fields]
      +-FileScan parquet ....

Ниже приведен пример пары строк, которые являются дубликатами, которые не были отброшены. Я подтвердил, что нет никаких странных ошибок пробелов, выполнив dropDuplicates () только для этих двух строк. Этот прогон сработал, как и ожидалось, вернув одну строку.

column_1 | column_2 | column_3 | column_4 | column_5| ..... column_200
 bob        jones     **null**   **null**   200.00           30
 bob        jones     **null**   **null**   200.00           30

Есть ли что-то происходящее под колпаком, которое может привести к сбою PySpark, но Spark Java будет успешным (извинения за мой расплывчатый жаргон здесь)? Заранее спасибо.

...