我有一个pyspark程序,可以直接打开Kafka流,读取消息并将它们存储在磁盘上。该程序在spark集群上运行,消息本地保存在每个客户端的磁盘上。消息以一对多的键值格式存储在Kafka中,我想根据键分离消息(这意味着来自特定键的所有消息将仅存储在单个spark客户端磁盘上)。
目前程序在群集上成功运行,并且数据并行处理,但我无法获得请求的行为。 我试图减少数据,这样我最终会为每个密钥并行处理一个消息列表,但是当一个带有该密钥的新消息到达时,它可能由另一个客户端处理(因此最终存储在不同的机器上)带有该密钥的其他消息)。
我还想把消息分离到Kafka分区,因为我知道spark为每个Kafka分区创建了一个单独的RDD分区,但我得到了相同的结果。
是否可以使RDD分区分离持久,或者以不同的方式获取我请求的行为?
我正在使用Kafka 0.9,Spark 1.6.1。
由于