java吧 关注:1,245,187贴子:12,719,790
  • 18回复贴,共1
新手跟着b站做SparkStreaming的一个项目,它有个地方要对kafka的数据进行分流,然后为了精确消费,要手动offset。我嫌代码太长了就把分流封装了一下
结果有意思的来了,流里面获取的offset竟然一直是空的并且不是每一次批操作都会分流,就是不会每次执行dStreamDiff函数。

第二张图是没有封装的,这个就是正常的。offset不为空,每一次批操作都会分流。这是什么原因,有没有老哥知道或者有思路的


IP属地:江西1楼2025-02-14 22:09回复
    不如直接问deepseek,这玩意好使,吧里面回复太慢了


    IP属地:广东来自Android客户端2楼2025-02-15 08:41
    收起回复
      rdd是在Executor端执行,doStreamDiff是在Driver端执行,怎么拿的到数据呢


      IP属地:福建来自Android客户端3楼2025-02-15 09:34
      收起回复
        你这个是啥技术啊,也是做后端的吗?


        IP属地:湖南来自Android客户端4楼2025-02-15 14:41
        收起回复
          deepsuck能解决


          IP属地:上海来自Android客户端5楼2025-02-15 19:46
          收起回复
            transform,map是惰性的?并没有执行


            IP属地:江苏来自Android客户端7楼2025-02-16 18:39
            收起回复
              transform操作发生在driver端,封装分流后分流操作发生在executor端。transform是惰性的,封装后driver端没有发生对offset的请求,同时offset不是共享变量,所以executor端只保存了offset初始的副本,导致offset一直为空


              IP属地:江西来自Android客户端10楼2025-02-17 14:32
              回复
                B站哪个项目呢


                IP属地:重庆来自Android客户端11楼2025-02-19 09:01
                收起回复