在 spark 中查找数据的最佳选择
Best option for lookup data in spark
我有一个要求,我需要从 kafka 主题中读取消息,对数据集进行查找,然后根据查找数据的结果发送消息。下面的示例使这一点更清楚。
Kafka 主题收到一条 xml 消息,该消息的字段 messageID 的值为 2345
我们进行查找并确认之前未发送过具有此 ID 的消息。如果返回 false,我们继续发送消息,然后将此 messageID 添加到查找数据中。
如果此 messageID 已在查找数据中,我们不会继续发送它。
目前这是通过使用 hbase table 来保存查找数据来实现的。然而,我们每天可以收到数百万条消息,我担心组件的性能会随着时间的推移而下降。
是否有其他更优化的解决方案来使用 hbase 查找数据,例如将此数据存储在 RDD 的内存中?我尝试了这个但是遇到了一些困难,因为 spark 上下文显然不可序列化,所以我无法添加到现有的 lookuo 数据集
非常感谢任何建议!
非常感谢
段
Spark 非常适合为分析目的处理大量数据。创建 RDD 抽象是为了增加 Map-Reduce 过程的性能限制。 Spark 不是像 HBase
.
这样的 key/value 商店的替代品
看看你的问题,在我看来你需要在 HBase 之上有一个缓存层。这可以通过 Redis
或其他分布式缓存机制来实现。
缓存的 RDD 在这里无济于事,因为
- 不能保证整个数据都在内存中
- 成对的 rdd 支持基于键值的查找,但是它遵循 map reduce 模式来查找键。 RDD 是一种抽象,它保留有关数据位置的信息和其中的沿袭 DAG 信息。 RDD 不会具体化数据,除非对其执行某些操作。现在,即使您将所有数据都保存在缓存中,RDD 也需要搜索数据进行查找。它不像 HBase,你有一个键的索引并且可以在恒定时间内完成查找。
现在您可能可以构建一些布隆过滤器,为您的数据建立索引并使用 Spark 进行查找。但是,这可能很难。
我有一个要求,我需要从 kafka 主题中读取消息,对数据集进行查找,然后根据查找数据的结果发送消息。下面的示例使这一点更清楚。
Kafka 主题收到一条 xml 消息,该消息的字段 messageID 的值为 2345
我们进行查找并确认之前未发送过具有此 ID 的消息。如果返回 false,我们继续发送消息,然后将此 messageID 添加到查找数据中。 如果此 messageID 已在查找数据中,我们不会继续发送它。
目前这是通过使用 hbase table 来保存查找数据来实现的。然而,我们每天可以收到数百万条消息,我担心组件的性能会随着时间的推移而下降。
是否有其他更优化的解决方案来使用 hbase 查找数据,例如将此数据存储在 RDD 的内存中?我尝试了这个但是遇到了一些困难,因为 spark 上下文显然不可序列化,所以我无法添加到现有的 lookuo 数据集
非常感谢任何建议!
非常感谢
段
Spark 非常适合为分析目的处理大量数据。创建 RDD 抽象是为了增加 Map-Reduce 过程的性能限制。 Spark 不是像 HBase
.
这样的 key/value 商店的替代品
看看你的问题,在我看来你需要在 HBase 之上有一个缓存层。这可以通过 Redis
或其他分布式缓存机制来实现。
缓存的 RDD 在这里无济于事,因为
- 不能保证整个数据都在内存中
- 成对的 rdd 支持基于键值的查找,但是它遵循 map reduce 模式来查找键。 RDD 是一种抽象,它保留有关数据位置的信息和其中的沿袭 DAG 信息。 RDD 不会具体化数据,除非对其执行某些操作。现在,即使您将所有数据都保存在缓存中,RDD 也需要搜索数据进行查找。它不像 HBase,你有一个键的索引并且可以在恒定时间内完成查找。
现在您可能可以构建一些布隆过滤器,为您的数据建立索引并使用 Spark 进行查找。但是,这可能很难。