有没有办法在apache spark转换中拥有共享的可变状态?我知道mapWithState操作,但它给你一个按键分区的状态,这对我不起作用,因为我有以下情况:
我有一个结构状态:deviceId:[userId:internalUserId]。所以mapWithState中的键将是deviceId,但是由于一个用户可以使用多个设备,我还需要访问该状态的平面地图:userId:internalUserId。不幸的是,火花流状态是不可能的。
我对此进行了很多研究,我发现共享状态的唯一事情是apache点燃。问题在于它位于Rdd抽象上,它只能由驱动程序调用,不能用于spark变换。因此,它主要用于在多个应用程序之间共享状态。
所有人都面临这样的问题,是否有可能用火花解决,或者我需要考虑另一种解决方案并在火花外做这种逻辑?
编辑:
我忘了提到该应用程序有很多匿名用户,我想要实现的功能是在内部为我们的系统映射这些用户。这意味着我无法按userId对用户进行分组。