Apache spark 优雅的迭代方式&;Spark数据帧中的比较
我有一个Spark数据框,有两列:Apache spark 优雅的迭代方式&;Spark数据帧中的比较,apache-spark,Apache Spark,我有一个Spark数据框,有两列:C1:Seq[Any]和C2:Double。我想 按C1的长度排序 对于c1中的每个元素c1,与c1中比c1长的每个其他元素进行比较 2.1如果c1包含在另一个元素cx中,则将c2与c2x进行比较 2.2如果c2c2x,则过滤掉(c1x,c2x) 有没有一个优雅的方法来实现这一点 样本输入: C1 C2 ab 1.0 abc 0.5 预期产出: C1 C2 ab 1.0 包含=子集。e、 g.ab包含在abc中 我有一个Spark数据帧,有两列:C1:Seq
C1:Seq[Any]
和C2:Double
。我想
C1
的长度排序c1
中的每个元素c1
,与c1
中比c1
长的每个其他元素进行比较
2.1如果c1
包含在另一个元素cx
中,则将c2
与c2x
进行比较
2.2如果c2
c2x
,则过滤掉(c1x,c2x)
C1 C2
ab 1.0
abc 0.5
预期产出:
C1 C2
ab 1.0
包含=子集。e、 g.ab包含在abc中
我有一个Spark数据帧,有两列:C1:Seq[Any]和C2:Double
C1
的长度排序c1
中的每个元素c1
,与c1
中比c1
长的所有其他元素进行比较2.1如果
c1
包含在另一个元素cx
中,则将c2
与c2x
进行比较2.2如果
c2
c2x
,则过滤掉(c1x,c2x)
val result=for(
(x,y)x.长度和y>b)
)产量(x,y)
就这些。你应该得到你想要的
我有一个Spark数据帧,有两列:C1:Seq[Any]和C2:Double
C1
的长度排序c1
中的每个元素c1
,与c1
中比c1
长的所有其他元素进行比较2.1如果
c1
包含在另一个元素cx
中,则将c2
与c2x
进行比较2.2如果
c2
c2x
,则过滤掉(c1x,c2x)
val result=for(
(x,y)x.长度和y>b)
)产量(x,y)
就这些。你应该得到你想要的首先分享你想要的;我已经试过了。然后分享一些输入样本和预期结果。您最后要做的是澄清一点
如果c1包含在另一个元素cx中,那么首先将c2与c2x进行比较分享您的观点;我已经试过了。然后分享一些输入样本和预期结果。你要做的最后一件事是澄清这一点,如果c1包含在另一个元素cx中,那么将c2与c2x进行比较。答案是否有助于你否决投票。如果没有,那么我应该删除它。答案对你没有帮助,你投了反对票。如果没有,那么我应该删除它
val rdd = sc.parallelize(List(("ab", 1.0), ("abc", 0.5)))
val rddSorted = rdd.sortBy(_._1.length).collect().distinct
val result = for(
(x, y) <- rddSorted;
(a, b) <- rddSorted.dropWhile{case(c,d) => c == x && d == y};
if(a.contains(x) && a.length > x.length && y > b)
)yield (x, y)