pyspark intersection()函数用于比较数据帧

时间:2017-12-28 09:05:38

标签: python hadoop pyspark pyspark-sql

下面是我编写的用于比较两个数据帧并对它们施加交集功能的代码。

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()工作,我可以解决。

1 个答案:

答案 0 :(得分:-1)

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