apache-spark - 如何检查 Spark 中两个 DataFrame 列的交集

标签 apache-spark pyspark sparkr

使用 pysparksparkr (最好是两者),我怎样才能得到两个的交集DataFrame列?例如,在 sparkr我有以下 DataFrames :

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为单列工作?

最佳答案

您需要两个 Spark DataFrame 才能使用 intersect 函数。您可以使用 select 函数从每个 DataFrame 中获取特定列。

在 SparkR 中:

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

在pyspark中:
newSalesHire = newHiresDF.select('name').intersect(salesTeamDF.select('name')) 

关于apache-spark - 如何检查 Spark 中两个 DataFrame 列的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168379/

相关文章:

regex - 删除 Spark 中 RDD 行中的连续空格

scala - 如何在数据集中存储自定义对象?

apache-spark - 如何使用UDF处理大的增量表?

python - 如何使用分组数据的后续行的值来使用pyspark确定当前行的值

r - SparkR dubt 和 Broken pipeline 异常

r - 如何将 csv 读入 sparkR 1.4 版?

r - Windows 上的 SparkR - Spark SQL 不是使用 Hive 支持构建的

apache-spark - 如何使用 Spark(Java) 在数据集的所有列上并行应用相同的函数

python - 多个 pyspark "window()"调用在执行 "groupBy()"时显示错误

python - 获取元组的第一项以在 pyspark 的列表中教授一行