首页 理论教育 实战:Spark Streaming多源数据处理

实战:Spark Streaming多源数据处理

时间:2023-06-20 理论教育 版权反馈
【摘要】:通过对多源数据的分析可以提供对现实世界中物体或者人物的“画像”。kafka提供了时间复杂度O的消息持久化能力,即使对于PB级的数据也能保证常数级的访问性能。我们要在Spark中使用kafka,首先要在build.sbt中加入这样的依赖:libraryDependencies+="org.apache.spark"%"spark-streaming-kafka_2.10"%"1.5.0"。Spark要想连接kafka,必须指明kafka的broker的地址和端口号,以及要建立连接的topic,然后通过KafkaUtils.createDirectStream这个方法加载kafka的配置信息,ssc,以及用topic把从kafka中读入的数据转换为streaming,以方便我们对数据进行标识。

实战:Spark Streaming多源数据处理

现实世界可以提供多数据源,在这些数据源中大部分数据源可以提供流式数据,即数据源源不断到达。通过对多源数据的分析可以提供对现实世界中物体或者人物的“画像”。本案例中通过对物体或者人物建立画像,可以有效的支撑企业对大数据应用的支持,比如说实时推荐系统等应用。下面是一个对多源数据进行流式处理,并且建立相应的用户标签的实例。以下为该案例的核心代码。

在以上核心代码中,我们使用了kafka系统。kafka是一种分布式的、基于发布/订阅的消息系统,主要实现数据的接口层和数据的实现层分离,同时提供了数据的一个副本防止数据丢失。kafka提供了时间复杂度O(1)的消息持久化能力,即使对于PB级的数据也能保证常数级的访问性能。我们要在Spark中使用kafka,首先要在build.sbt中加入这样的依赖:libraryDependencies+="org.apache.spark"%"spark-streaming-kafka_2.10"%"1.5.0"。这里的Scala版本和Spark的版本要和本地系统相匹配。Spark要想连接kafka,必须指明kafka的broker的地址端口号,以及要建立连接的topic,然后通过KafkaUtils.createDirectStream这个方法加载kafka的配置信息,ssc,以及用topic把从kafka中读入的数据转换为streaming,以方便我们对数据进行标识。

打印标签的时候我们首先生成一个标签编码表,标签编码表用来存放我们自己建立的标签。然后我们再建立一个空的用户标签表,用来做模式匹配,注意,这里的schema就像数据库表的表头。然后我们流式读入数据,根据用户的每一个字段和schema进行匹配,如果有这个属性,就为1,没有就为0。这样我们就建立了一张用户的标签表。(www.xing528.com)

该案例的全部源码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈