• 记录一下SparkStreaming中因为使用redis做数据验证而导致数据结果不对的问题


    业务背景:

    需要通过redis判断当前用户是否是新用户。当出现新用户后,会将该用户放入到redis中,以标明该用户已不是新用户啦。

    出现问题:

    发现入库时,并没有新用户入库,但我看了数据了,确实应该是有新数据

    问题原因:

    因为在判断新用户这一步是在flatmap这一步做的。

    flatmap后的RDD,后边会被两个action使用。

    问题是,因为是执行两次action时,flatmap也会执行两次。

    而最终入库的代码是在第二个RDD中。结果就是永远不会存在最新用户啦

    解决方案:

    flatmap后,做一下cache,这样就不会多次执行flatmap

  • 相关阅读:
    DFS总结
    cmake-make-gcc(g++)
    std::function
    basic_string定义的相关string函数
    欧拉路径和欧拉回路
    正则表达式
    C++ Data Types
    关于uniapp的插槽
    关于微信H5 分享配置
    h5请求的时候总是会跨域
  • 原文地址:https://www.cnblogs.com/hark0623/p/4674089.html
Copyright © 2020-2023  润新知