Apache spark Spark batch或Streaming中的代理密钥

Apache spark Spark batch或Streaming中的代理密钥,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我有一个用例,可以为我使用Spark Streaming程序插入到配置单元表中的每个记录生成一个代理键(唯一且增量为1)。即使程序重新启动,该键也不能重复 根据我的研究,这不可能在spark流中实现,因为执行器将在不同的节点上运行 有没有办法实现这一点 火花批 使用RDD.zipWithIndex()为每一行设置索引 火花流 在每个批处理结束时,找到max key并将其存储到持久数据库中 在每批开始时,获取上一批的max密钥并运行如下代码: val n=lastBatchMaxKey() df.

我有一个用例,可以为我使用Spark Streaming程序插入到配置单元表中的每个记录生成一个代理键(唯一且增量为1)。即使程序重新启动,该键也不能重复

根据我的研究,这不可能在spark流中实现,因为执行器将在不同的节点上运行

有没有办法实现这一点

火花批

使用RDD.zipWithIndex()为每一行设置索引

火花流

  • 在每个批处理结束时,找到max key并将其存储到持久数据库中
  • 在每批开始时,获取上一批的max密钥并运行如下代码:

    val n=lastBatchMaxKey()
    df.rdd.zipWithIndex().map(xx=>{
    val(行,idx)=(xx.\u 1,xx.\u 2)
    val key=idx+n//这是键
    })

  • 火花批

    使用RDD.zipWithIndex()为每一行设置索引

    火花流

  • 在每个批处理结束时,找到max key并将其存储到持久数据库中
  • 在每批开始时,获取上一批的max密钥并运行如下代码:

    val n=lastBatchMaxKey()
    df.rdd.zipWithIndex().map(xx=>{
    val(行,idx)=(xx.\u 1,xx.\u 2)
    val key=idx+n//这是键
    })


  • 我们可以生成hashcode并使其唯一,但它不会满足“增量为1”的条件。你觉得这样好吗?。我很好。请告诉我如何在spark作业上生成哈希代码,以及如何使其唯一。我们可以生成哈希代码并使其唯一,但它不会满足“增量为1”的条件。你觉得这样好吗?。我很好。您能告诉我如何在spark作业上生成哈希代码以及如何使其唯一吗?如果分区在多个节点上运行,它会产生唯一的值吗?@AKC,是的,zipWithIndex意味着为RDD中的每一行提供唯一的索引。我能知道zipWithIndex在Java中的等效值吗?@AKC,JavaRDD.zipWithIndex()如果分区在多个节点上运行,它会产生唯一的值吗?@AKC,是的,zipWithIndex意味着为RDD中的每一行提供唯一的索引。我能知道Java中的zipWithIndex等价物吗?@AKC,javard.zipWithIndex()