pyspark intersection() 函数来比较数据帧



下面是我编写的代码,用于比较两个数据帧并对其施加交集函数。

import os
from pyspark import SparkContext
sc = SparkContext("local", "Simple App")
from pyspark.sql import SQLContext, Row
sqlContext = SQLContext(sc)
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
df = sqlContext.read.format("jdbc").option("url","jdbc:sqlserver://xxx:xxx").option("databaseName","xxx").option("driver","com.microsoft.sqlserver.jdbc.SQLServerDriver").option("dbtable","xxx").option("user","xxxx").option("password","xxxx").load()
df.registerTempTable("test")
df1= sqlContext.sql("select * from test where amitesh<= 300")
df2= sqlContext.sql("select * from test where amitesh <= 400")
df3= df1.intersection(df2)
df3.show()

我得到以下错误:

AttributeError: 'DataFrame' object has no attribute 'intersection'

如果我的理解是正确的,intersection()是一个从python set函数派生的内置子函数。所以

1)如果我尝试在pyspark中使用它,我是否需要在我的代码中导入任何特殊模块,或者它也应该像pyspark内置的那样工作?

2) 要使用这个 intersection() 函数,我们首先需要将 df 转换为 rdd 吗?

如果我错了,请纠正我。有人可以给我一个工作的例子吗?

我的动机是从SQL服务器获取公共记录并迁移到HIVE。截至目前,我首先尝试让我的交集功能工作,然后从 HIVE 要求开始,如果 intersection() 正常工作,我可以照顾好。

我让它为我工作,而不是 intersection(),我使用了 intersect(),它起作用了。

相关内容

  • 没有找到相关文章