为什么不单独使用spark流呢

egmofgnx  于 2021-06-07  发布在  Kafka
关注(0)|答案(3)|浏览(282)

我对kafka/spark流媒体没有太多的经验,但我读过很多文章,介绍了combo在构建实时分析系统/ Jmeter 板方面有多么出色。有人能给我解释一下为什么spark流媒体不能单独完成吗?换句话说,为什么Kafka在数据源和spark流媒体之间?
谢谢

ao218c7q

ao218c7q1#

为了使用spark处理数据,我们需要通过spark支持的不同数据源提供数据(或者我们需要编写自己的自定义数据源)
如果是静态数据,spark提供

sc.textFile("FILE PATH") //For reading text file
  sc.wholeTextFiles("DIRECTORY PATH") //For reading whole text files in a directory
  sqlContext.read.parquet("FILE PATH")
  sqlContext.read.json("FILE PATH")

将您的逻辑应用于生成的rdd。
在流式传输的情况下,spark支持来自不同来源的数据,如
Kafka、flume、kinesis、twitter、zeromq、mqtt等。
spark也支持简单的套接字流,
val lines=ssc.sockettextstream(“localhost”,9999)
更多
kafka是一个高吞吐量的分布式消息传递系统。kafka的分布式行为、可伸缩性和容错性比其他消息传递系统具有优势(mqtt、zmq等)
所以问题是在这些数据源中哪一个是你的?您可以用自己的数据源替换Kafka数据源。我们使用mqtt作为默认源。

nue99wik

nue99wik2#

其实这个问题有一个简单的解释。
spark流媒体和其他流媒体环境是为即时读取数据而设计的。在读取过程之后,他们没有太多的能力来保持数据的活力(有些人有,但效率不高)。顺便说一句,像kafka这样的消息代理需要在特定时间内保持数据的活动性。因此,其他工具可以通过使用使用者随时轻松地从messagebroker(kafka)获取数据。分工负责会给你带来有效的结果。

7uhlpewt

7uhlpewt3#

有人能给我解释一下为什么spark流媒体不能单独完成吗?
spark流媒体是为实时数据和数据需要从某处摄取。像Kafka,Flume,动觉,或tcp套接字。甚至可以从文件中读取数据。
https://spark.apache.org/docs/latest/streaming-programming-guide.html
如果您的用例足够简单,可以从文件中读取,那么我建议使用apachenifi。
https://www.youtube.com/watch?v=gqv_63a0abo&list=plzmb162wvzr05pe-lobqezkk0zxuzms56
换句话说,为什么Kafka在数据源和spark流媒体之间?
根据场景的不同,kafka通常是存储数据,然后从不同方面进行消费的合适选择。

相关问题