Java 使用Spark在两个数据帧中查找相似列
我有两个Java 使用Spark在两个数据帧中查找相似列,java,apache-spark,apache-spark-mllib,Java,Apache Spark,Apache Spark Mllib,我有两个数据帧,其中有些数据如下 +-------+--------+------------------+---------+ |ADDRESS|CUSTOMER| CUSTOMERTIME| POL | +-------+--------+------------------+---------+ | There| cust0|3069.4768999023245|578596829| | There| cust0|3069.4768999023245|4383
数据帧
,其中有些数据如下
+-------+--------+------------------+---------+
|ADDRESS|CUSTOMER| CUSTOMERTIME| POL |
+-------+--------+------------------+---------+
| There| cust0|3069.4768999023245|578596829|
| There| cust0|3069.4768999023245|43831451 |
| Here| cust1| 15.29206776391711|578596829|
| There| cust0|3069.4768999023245|43831451 |
| Here| cust1| 15.29206776391711|578596829|
| Here| cust4| 32.04741866436953|43831451 |
+-------+--------+------------------+---------+
及
现在,我想比较这两个数据帧,以找到匹配的列,我可以在下一步将这些
数据帧
连接起来(在这种情况下,它将是策略
和POL
)。有什么算法或其他方法可以预测吗?给定df1
和df2
您可以通过
df1 = sc.parallelize([('1',),('2',)]).toDF(['a'])
df2 = sc.parallelize([('1','2'),('2','3')]).toDF(['a','b'])
>>>set(df1.columns).intersection(set(df2.columns))
set(['a'])
>>>list(set(df1.columns).intersection(set(df2.columns)))
['a']
这应该会有所不同
>>> list(set(df1.columns).symmetric_difference(set(df2.columns)))
['b']
它能在
pyspark
中吗?@Bala我正在寻找一种方法,在两个数据帧中找到我可以连接的列。如果列名也不同怎么办?我需要一些可以比较数据和预测列的东西?我编辑了我的帖子以避免混淆。对答案进行了更改。前面的代码错误。只有列名相同ryt?时,此代码才会提供?。在我的例子中,根本没有匹配的列名。如果两个列具有相同的值(例如,first_name、last_name),那么这将非常昂贵,并且准确性将很低
>>> list(set(df1.columns).symmetric_difference(set(df2.columns)))
['b']