下面是我编写的用于比较两个数据帧并对它们施加交集功能的代码。
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()工作,我可以解决。
答案 0 :(得分:-1)
我让它为我工作,而不是intersection(),我使用intersect(),它工作。