【问题标题】:Easiest stream processing framework for python?python最简单的流处理框架?
【发布时间】:2021-11-21 21:54:30
【问题描述】:

我正在开展一个项目,该项目将决定我是否获得实习机会。该项目专注于流处理,预计在 2 周内完成。这非常简单,只需从 csv 文件导出一些统计数据并将其打印到 GUI 上。 该项目看起来像这样:

提供的 CSV 格式为

ID: int, OperatingSystem: str, Date: str, Score: int

我应该跟踪最低、最高和中间分数

  • 每个操作系统,
  • 每个日期,并且
  • 整个数据集

然后我应该定义一个用于创建直方图的数据结构,包括每个日期、操作系统和整个数据集。我可以使用任何我想要的语言,但如果可能的话,我更喜欢 Python。

问题是我以前从未做过任何流处理工作,而且我很难找到有关如何将其实际放入代码的资源。我看过解释 kafka 的视频,并查看了 faust 和 Maki Nage 框架的文档和代码示例,但我只得到了立即使程序崩溃并盯着文档页面挠头的程度。

是否有任何我应该研究的简单、有据可查的流处理库?此外,是否有任何资源可以演示如何为这些库实际编写代码? Youtube 似乎只关注架构和 uml 图,没有任何实际演示,我开始担心我永远不会理解如何构建这个项目。

谢谢, 艺妓

【问题讨论】:

  • 我喜欢使用 Spotify 和 Netflix 使用的 gRPC - 它是由 Google 开发的,被广泛用作微服务之间的通信。
  • 您应该通过网络流式传输还是直接从文件流式传输?
  • 如果您应该从文件中流式传输,这非常简单
  • 因为你可以懒惰地读取文件并实时处理每一行:stackoverflow.com/a/519653/12868928
  • 是的,它直接从 csv 文件流式传输

标签: python stream-processing


【解决方案1】:

这只是一个正确的方向,它不必是一个类,你也可以用内部函数创建一个函数。你只需要坚持一些状态。

此函数将对它读取的每一行进行计算。

# Remember to strip the header first

class Streamer:
    data = []

    date = {
        'high': 0,
        'low': 0,
        'median': 0,
    }

    os = {
        'high': 0,
        'low': 0,
        'median': 0,
    }

    score = {
        'high': 0,
        'low': 0,
        'median': 0,
    }

    def __init__(self)
        for line in open('file.csv', 'r'):
            es  = [x.strip() for x in line.strip().split(',')]

            x   = {
                'id'    : x[0],
                'os'    : x[1],
                'date'  : x[2],
                'score' : x[3],
            }

            self.calculate_os_median_high_low(x['os'])
            self.calculate_date_median_high_low(x['date'])
            self.calculate_score_median_high_low(x['score'])

            self.data.append(x)

    def calculate_os_median_high_low(self, os):
        pass

    def calculate_date_median_high_low(self, date):
        pass

    def calculate_score_median_high_low(self, score):
        pass

如果你想变得更聪明,那么你可以只输入每行的列表并同时运行读数,这样你就可以从读数之外调用计算函数,从而节省大量的计算能量。 (在这种情况下,我会改用 Golang,因为在 golang 中并发比在 python 中更容易和安全 100 倍)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多