在 Spark Streaming 中,通常可以接入哪些类型的数据源?
考察说明
考察对 Spark Streaming 输入源种类的熟悉程度。
回答思路
- 【回答框架 1】Spark Streaming 常见数据源分为基础数据源和高级数据源两类。基础数据源包括文件系统(如本地文件系统、HDFS)、Socket 连接以及 Akka Actor;高级数据源包括 Kafka、Flume、Kinesis、Twitter 等,其中 Kafka 是最常用的。
- 【回答框架 2】对于基础数据源,通过 StreamingContext 的 socketTextStream、textFileStream 等方法创建输入流;对于高级数据源,通常需要引入额外的依赖并使用专门的接收器(Receiver)或直接使用无接收器方式(如 Kafka 的 direct 模式)来消费数据。
- 【回答框架 3】常见的数据源还包括自定义 Receiver,以支持特定数据源;此外 RDD 队列可用于测试。
- 【回答框架 4】选择数据源时需考虑数据吞吐量、容错性、精确一次语义支持等,Kafka 因其高吞吐和分区特性成为生产环境首选。
- 【关键点 1】基础数据源包括文件流、Socket 流和 RDD 队列。
- 【关键点 2】高级数据源包括 Kafka、Flume、Kinesis 等。
- 【关键点 3】Kafka 是最常用且推荐的生产级数据源。
- 【关键点 4】自定义 Receiver 可扩展任意数据源。
- 【易错点 1】不要混淆 Receiver 方式与 direct 方式的容错和一致性语义。
- 【易错点 2】文件流需注意文件命名规则,避免重复处理。
- 【易错点 3】高级数据源依赖版本匹配,需谨慎集成。