迭代数据帧以查找连接的行 - 我是否需要将每一行转换为数据帧?

时间:2018-01-23 08:26:48

标签: scala apache-spark dataframe spark-dataframe spark-graphx

我在下面有一个函数,它接受两个数据帧并返回一个数据帧。

def doJoin (df1: DataFrame, df2: DataFrame): DataFrame={
  val cols = df1.columns
  val r = df1.join(df2, cols.map(c => df1(c) === df2(c)).reduce(_ || _) )
    .select(cols.map(df1(_)) :_*)
    .distinct  
  return r
}

问题是现在我想循环遍历df2,并为每一行执行此操作(换句话说,将每行视为df并将其传递给该函数)。我试过像df2.foreach(map((a => (a.getInt(0), a.getString(1)))))这样的东西,但错过了缺少参数类型的错误。我该怎么做?非常感谢!

示例:给定输入df1

Col1    Col2 
 1         30    
 2         30
 3         70 
 2         40
 4         90

我想获取它的每一行,并找到表中所有连接的单元格。所以对于(1,30),预期输出是

1      30
2      30 //as (2, 30) is connected to (1,30) through 30
2      40 //as (2, 40 ) is connected to (2, 30) through 2

然后再行(2,30)做同样的事情。或者它更像是GraphX api的用例?

0 个答案:

没有答案