2017-12-25 16 views
0

私は火花1.6とPython 2.7を使用していますが、私は以下のようなスパークデータフレームを持っている:スパークSQLのデータフレームでスワップ2つの列を、重複を削除

df = sqlContext.createDataFrame([ 
     ("ab", "bc"), 
     ("bc", "cd"), 
     ("cd", "ab"), 
     ("bc", "ab"), 
     ("cd", "bc"), 
     ("ab", "cd"), 
    ], ["col1", "col2"]) 

このデータフレームは、「COL1」としてグラフの頂点が含まれています"col2"。私がしようとしているのは、col1とcol2の複製ペアを削除することです。 colcol1が列を入れ替えて別の操作を実行した場合、col1とcol2を比較してください。

が操作した後、その結果は次のようになります。

+------------+ 
| col1 col2 | 
+------------+ 
| ab bc | 
| bc cd | 
| cd ab | 
+------------+ 

は基本的に、私は唯一の有向エッジを持つグラフを作成しようとしています。

答えて

2

あなたは、単に行うことができ、次の

from pyspark.sql import functions as F 
finaldf = df.withColumn('col1_1', F.when(df.col2 < df.col1, df.col2).otherwise(df.col1)) \ 
    .withColumn('col2_1', F.when(df.col2 < df.col1, df.col1).otherwise(df.col2))\ 

finaldf.select(finaldf.col1_1.alias("col1"), finaldf.col2_1.alias("col2")).distinct().show() 

ここで行わ二つの新しい列がcol2 < col1ロジックを適用を作成し、最後にselectdistinctsをINGのです何。

+0

ありがとうございます。レコードセットに3億のレコードが含まれていると効率的ですか? – user1590716

+0

はい@ user1590716私はそう思います。 –

関連する問題