PySpark DataFrame не может удалить дубликаты

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

df.drop_duplicates(subset='id')

Я получаю следующую ошибку:

Py4JError: An error occurred while calling z:org.apache.spark.api.python.PythonUtils.toSeq. Trace:
py4j.Py4JException: Method toSeq([class java.lang.String]) does not exist
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:360)
    at py4j.Gateway.invoke(Gateway.java:254)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:209)
    at java.lang.Thread.run(Thread.java:745)

Использую osx 10.11.4, spark 1.6.1

Я запустил такой блокнот jupyter

PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark

Есть ли другие конфигурации, которые я мог пропустить или ошибиться?


person Max    schedule 07.05.2016    source источник


Ответы (1)


Аргументом для drop_duplicates / dropDuplicates должен быть набор имен, эквивалент которых в Java может быть преобразован в Scala Seq, а не одну строку. Вы можете использовать либо list:

df.drop_duplicates(subset=['id'])

or a tuple:

df.drop_duplicates(subset=('id', ))
person zero323    schedule 07.05.2016
comment
Блин, спасибо. Я этого не понял. Думал, что это работает аналогично pandas dfs. - person Max; 08.05.2016