你好,
我需要找出現重複記錄的所有PySpark DataFrame。下麵是示例數據集:
#數據準備數據= [(“A”,“一個”,1),\ (“A”,“一個”,2),\ (“A”,“一個”,3),\“A”、“B”(4), \“A”、“B”(5), \ (“A”、“C”、6), \ (“A”,“D”, 7), \ (“A”,“E”, 8), \] #創建DataFrame列= [“col_1”、“col_2”,“col_3”] df =火花。createDataFrame(=數據、模式=列)df.printSchema () df.show(截斷= False)
當我試著下麵的代碼:
primary_key = [' col_1 ', ' col_2 '] duplicate_records = df.exceptAll (df.dropDuplicates (primary_key))
的輸出將會是:
正如你所看到的,我不明白出現的所有重複的記錄基於主鍵,因為重複的記錄的一個實例是在“df.dropDuplicates (primary_key)”。第一和第四記錄必須在輸出的數據集。
知道解決這個問題嗎?
你好,
不重複的記錄,做“left_anti”加入應該足夠了。
not_duplicate_records = df.groupBy (primary_key) .count ()。在哪裏(數= 1).drop duplicate_records = df(“計數”)。加入(= primary_key not_duplicate_records, =“left_anti”),告訴()
@Mohammad軍刀如何使用下麵的窗口函數
windowSpec = Window.partitionBy (* primary_key) df.withColumn (“primary_key_count F.count (“*”) .over (windowSpec)) .filter (F.col (primary_key_count) > 1) .drop (“primary_key_count”),告訴(截斷= False)