2017-09-13 2 views
0

Die Drop-Duplikate Methoden von Spark DataFrames funktioniert nicht und ich denke, es ist, weil die Indexspalte, die Teil meiner Datenmenge war, als eine Spalte von Daten behandelt wird . Es sind definitiv Duplikate drin, ich habe es überprüft, indem ich COUNT() und COUNT(DISTINCT()) auf allen Spalten außer dem Index verglichen habe. Ich bin neu bei Spark DataFrames, aber wenn ich Pandas verwendete, würde ich an dieser Stelle pandas.DataFrame.set_index für diese Spalte tun.Spark DataFrame äquivalent zu Pandas.DataFrame.set_index/drop_duplicates vs. dropDuplicates

Kann jemand mit dieser Situation umgehen?

Zweitens scheint es 2 Methoden auf einem Spark DataFrame, drop_duplicates und zu geben. Sind sie gleich?

+0

teilen einige Ihrer Code, der uns die Frage besser zu verstehen helfen. – Munesh

Antwort

1

Wenn Sie nicht möchten, dass die Indexspalte bei der Überprüfung der einzelnen Datensätze berücksichtigt wird, können Sie die Spalte mit dem Befehl unter oder die gewünschten Spalten löschen.

df = df.drop('p_index') // Pass column name to be dropped 

df = df.select('name', 'age') // Pass the required columns 

drop_duplicates() ist ein Alias ​​für dropDuplicates().

https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrame.dropDuplicates

+0

Danke, und auch für den Link. Was mich an den Spark-Dokumenten ärgert, ist die Hälfte der Zeit, in der man etwas in eine Suchmaschine steckt, man landet eher im Quellcode als in den Dokumenten, was nutzlos ist. Okay, bevorzugen Sie den Drop-Befehl ohne den Unterstrich, warum benötigt er einen Alias ​​.. Der Schlüssel ist das 'subset'-Argument in den Dokumenten. Es beseitigt die Sorge, etwas mit der Indexspalte zu tun. – cardamom