Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用卡夫卡作为搜索信息的框架_Python_Apache Kafka - Fatal编程技术网

Python 使用卡夫卡作为搜索信息的框架

Python 使用卡夫卡作为搜索信息的框架,python,apache-kafka,Python,Apache Kafka,我有一个关于阿帕奇·卡夫卡的问题。我有一个场景,我想在一个大的6GB.xml文件中查找信息,这个文件是维基百科的最新转储文件。因此,它包含信息的逻辑集合,通常跨越20-25行。我的目标是输入两名足球运动员的姓名,并在本文档中搜索其他信息(存在)并进行比较。由于每次输入新名称时都需要解析文档,因此我正在考虑顺序搜索和正则表达式模式匹配。以后可能会尝试索引和反向索引。首先,我的输入文件将包含大约100000行 我知道卡夫卡工作原理的一般概念。有些服务器用作存储,有些服务器负责导出和导入信息。还有一些

我有一个关于阿帕奇·卡夫卡的问题。我有一个场景,我想在一个大的6GB.xml文件中查找信息,这个文件是维基百科的最新转储文件。因此,它包含信息的逻辑集合,通常跨越20-25行。我的目标是输入两名足球运动员的姓名,并在本文档中搜索其他信息(存在)并进行比较。由于每次输入新名称时都需要解析文档,因此我正在考虑顺序搜索和正则表达式模式匹配。以后可能会尝试索引和反向索引。首先,我的输入文件将包含大约100000行


我知道卡夫卡工作原理的一般概念。有些服务器用作存储,有些服务器负责导出和导入信息。还有一些客户端可以访问并处理这些数据。我的问题是,因为这只是一个学校项目,我使用卡夫卡处理输入的6GB文件有什么意义吗?我有一个简单的演示程序,我在python中打开并读取一个文件,然后使用kafka生产者发送它,然后使用kafka消费者“接收”它,但是,如果在我查找所需信息时只读取文件的行不简单,我会感到困惑。

Kafka支持并行处理,因为它支持将主题拆分为分区。在您的情况下,我会考虑创建一个主题并将其分割为50个分区。然后,您可以从处理xml的单线程进程快速连续地向主题写入记录

创建一个消费者,阅读主题并执行搜索;考虑将匹配记录输出到客户端可以读取的最终主题。

您不必对使用者进行多线程(使用进程内线程),只需启动它的多个独立实例,只要将它们配置为全部加入同一使用者组即可。拥有生产者循环记录(只要每个记录都有一个唯一的密钥,这是自动完成的——如果没有自然密钥,可以使用uuid)。随着用户实例的增多,kafka代理将确保每个实例都获得大致相等的分区子集,从而获得合理的负载平衡效果。当用户进程的数量增加到可用于执行搜索的核心数量时,您会发现性能会提高

通过让首先为输入主题生成记录的流程也等待最终输出主题的结果,您可以轻松地将结果写入与启动初始处理相同的tty


在用户组中启动多个单独的进程模拟了分布式系统中的水平扩展模式。例如,在kubernetes中,您可以增加部署的副本数量(/replicaset),如果您以上述方式使用kafka,您将看到类似的负载平衡行为。

kafka在这里没有帮助。它旨在支持处理大量的小消息。通常,最大消息大小为1MiB。但是,如果该文件实际上由许多小消息组成,那么将它们作为单独的消息发送可能是一个有用的练习,可以玩Kafka分区、消费群体和一般的并行处理。如果这有什么帮助,则该文件是wikipedia最新的xml转储,因此它由小消息组成。例如,一个逻辑的信息集合大概有20行左右。然后考虑到这是一个学校项目,我肯定会考虑拆分并发送个人信息。根据您正在进行的处理,您可能能够在获得最终结果之前并行执行一些操作。我需要查找两名足球运动员的姓名并比较他们的一些信息,这意味着我必须进行顺序搜索并进行正则表达式模式匹配。但我还是很困惑,制作人能同时发送消息吗?我知道消费者可以使用多线程或被分配到特定的主题分区,但问题是,它是否比定期使用快?好的,似乎是明智的。你为什么不在这个问题上多加一点细节,我会尽力给出一个答案,帮助你开始。