2017-05-24 20 views
1

pysparkまたはsparkrのいずれか(好ましくは両方)を使用すると、どのように2つのDataFrame列の交差を取得できますか?例えば、sparkrに私はDataFramesを次ていますSparkで2つのDataFrame列の交差をチェックする方法

newHires <- data.frame(name = c("Thomas", "George", "George", "John"), 
         surname = c("Smith", "Williams", "Brown", "Taylor")) 
salesTeam <- data.frame(name = c("Lucas", "Bill", "George"), 
         surname = c("Martin", "Clark", "Williams")) 
newHiresDF <- createDataFrame(newHires) 
salesTeamDF <- createDataFrame(salesTeam) 

#Intersect works for the entire DataFrames 
newSalesHire <- intersect(newHiresDF, salesTeamDF) 
head(newSalesHire) 

     name surname 
    1 George Williams 

#Intersect does not work for single columns 
newSalesHire <- intersect(newHiresDF$name, salesTeamDF$name) 
head(newSalesHire) 

    Error in as.vector(y) : no method for coercing this S4 class to a vector 

どのように私はintersectは、単一の列のために働くことを得ることができますか?

+0

はpyspark 'spark.createDataFrame([ "A"、 "B"、 "X"]で正常に動作し、StringType() ).intersect(spark.createDataFrame(["z"、 "y"、 "x"]、StringType())) –

答えて

2

intersect関数に2つのSparkDFが必要です。選択機能を使用することができます。 SparkRで

:pysparkで

newSalesHire <- intersect(select(newHiresDF, 'name'), select(salesTeamDF,'name')) 

newSalesHire = (newHiresDF.select('name')).intersect(salesTeamDF.select('name')) 
関連する問題