Apache Spark Streaming 使用实例
本文翻译自: https://cloudxlab.com/assessm...
电子商务
在深入地探讨 Spark Streaming 之前,让我们先了解一下它的受用场景。
让我们考虑一个电子商务公司,该公司想要建立一个实时分析的大屏看板,以优化自己的库存和运营。看板上包含有每分钟购买、装包和配送的产品数量。
我们该如何使用 Spark Streaming 构建这一实时看板呢?让我们来讨论一下它在这一过程中起到的作用。
一旦产品状态发生了变化,订单管理系统会将产品的 ID 和产品状态推送到 Kafka 之中( 我们将在之后的课程中讨论 Kafka )。Spark Streaming 从 Kafka 之中读取数据。输入流的每一行都包含产品的 ID 和它的当前状态。比如 1782 号产品处于「购买」状态,而 1723 号产品处于「装包」状态。Spark Streaming 从输入流中以分钟为单位创建批处理。之后,Spark 引擎处理每个批处理,并分别生成输出流。如你所见,最后输出的结果包含了这一分钟内产品被购买、装包、配送的数量。
Spark Streaming 会在人为停止或遭遇错误之前一直执行。你可以把它看作是一个持续在后台运行的守护进程。Spark Streaming 持续不断的读取输入的数据,按照指定的批处理间隔创建批处理,并为每一个批处理生成输出流。
你将在之后的课程完成实时分析看板项目。
倾向性分析
倾向性分析是近期的一个热点话题。这一分析非常重要,它能帮助公司了解自己的产品和服务是否被消费者满意。我们该如何从 facebook、twitter、用户的反馈、评论和观点等多种来源的数据中分析出用户每一刻的倾向呢?
让我们来讨论 Spark Streaming 在实时倾向性分析中起到的帮助吧。
Spark Streaming 可以同时从多个数据源中获取数据。如上所述,这些数据源包括 facebook、twitter,以及用户在网上提交的反馈意见。
Spark Streaming 从输入数据中创建 15 分钟为单位的批处理。这之后,Spark 引擎会对这些批处理进行处理,并进行用户倾向性分析。对于倾向性分析,我们可以借助多种库,比如斯坦福的 coreNLP。
实时欺诈检测
让我们再讨论一种 Spark Streaming 的应用场景吧。我们该如何构建一个实时欺诈检测系统,以便银行能够发现欺诈交易呢?
如果这一系统存在,银行就能在某一笔交易被打上欺诈交易的标签后作出合适的处理。为此,我们可以使用机器学习去训练一个欺诈交易的模型,比如 Spark MLlib。
现在我们来讨论一下如何利用 Spark Streaming 构建实时欺诈检测系统。
如上所述,Spark Streaming 接收实时的银行交易作为输入流。Spark Streaming 为此以一分钟为单位创建批处理,并利用已经训练好的模型进行欺诈交易检测。
更多的例子
Uber 利用 Spark Streaming 通过收集移动用户的数据进行实时遥测分析。
Pinterest 利用 Spark Streaming 来实时了解世界各地的用户如何进行互动。
Netflix 利用 Spark Streaming 向用户提供电影推荐。
正如以上的场景所示,Spark Streaming 不断接收输入数据流、使用 Spark 引擎进行分析,并产生对应的输出数据流。