Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 优雅的迭代方式&;Spark数据帧中的比较_Apache Spark - Fatal编程技术网

Apache 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

我有一个Spark数据框,有两列:
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)