2016-07-31 9 views
5

質問:重複を削除する際には、保持する列を指定することができます。 Spark Dataframesに相当するものはありますか?spark dataframe drop duplicates最初に保存

パンダ:

df.sort_values('actual_datetime', ascending=False).drop_duplicates(subset=['scheduled_datetime', 'flt_flightnumber'], keep='first') 

スパークデータフレームは、(私はスパーク1.6.0を使用)keepオプション

df.orderBy(['actual_datetime']).dropDuplicates(subset=['scheduled_datetime', 'flt_flightnumber']) 

'scheduled_datetime' と 'flt_flightnumber' を想像していないが、列6、17です。これらの列の値に基づいてキーを作成することで、我々はまた、

def get_key(x): 
    return "{0}{1}".format(x[6],x[17]) 

df= df.map(lambda x: (get_key(x),x)).reduceByKey(lambda x,y: (x)) 

を重複排除することができますが、最初の行を維持し、他の重複を取り除くためにを指定する方法?最後の行はどうですか?デフォルトで

+4

を保持します。あなたのコードは、あなたが望むことをしていないと確信していますか? –

+0

私はテストしました。 –

+0

最後の行を保持したい場合はどうすればいいですか?重複する値については1つの列だけを見ています – hipoglucido

答えて

0

使用dropDuplicates方法あなたが指定したとdupesの残りの部分を取り除く列の組み合わせごとに最初の行を保っているdropDuplicates` `実行すると、それは最初のoccurance

関連する問題