1.怎么理解spark streaming中的dstream?
它是spark streaming的基础数据结构,代表着(time,RDD)序列,有两种生成方式,一种是
基于流数据创建(kafka,socket...),一种是基于已有的dstream进行转换产生.
在spark streaming作业运行的时候,Dstream会根据它的duration,定期生成RDD.
而且会进一步根据rdd生成作业,排入队列,调度器触发执行.
由此可以理解,为什么说spark streaming是微批处理的.它提前生成好一批一批的作业,
调度执行.并不是真正的实时的流.
2.kafkaUitls.createstream和createDirectStream有什么不同?
directStream:返回的Rdd的partition的数量与topic/partitions的数量一致,不需要写代码来控制并发取数据的逻辑.
directStream返回的key,value就是原始的发送到kafka中的key,value,key就是消息本身的key,value就是消息.
Directstream直接派生自inputStream,而kafkastream派生自receiverinputstream,同上面的理解,
directstream是运行在driver端的,而且支持后压的特性.
而createstream是运行在worker端的.
directstream没有更新zookeeper上的offset,需要自己手动更新.
时间: 2024-10-08 01:21:00