我编写了一个简单的火花流应用程序,它基本上从Kafka读取事件流,并将这些事件存储在Cassandra中,允许对这些数据进行有效查询。这项工作的主要目的是处理当前的实时数据。但是也有存储在hdfs中的历史事件。
我想在历史工作中重用代码处理RDD(流工作的一部分),我想知道根据以下要求阅读历史数据的最佳解决方案是什么:
到目前为止,我已经考虑了两种方法:
ssc.textFileStream(inputDir)
并将我想要处理的文件复制到此目录更好吗?spark.streaming.receiver.maxRate
属性我是否正确,常规批量火花不能满足我的要求?我正在等待有关火花流解决方案的建议。
答案 0 :(得分:2)
对于Batch Spark作业, 1.您可以在sc。***文件操作中给出逗号分隔的文件名 2,3。因为你将能够
对于流媒体工作, 1.您可以为文件定义RDD并使用queueStream插入它们。 2.取决于你暂停的意思。您可以在想要暂停时优雅地停止流式上下文。 是的,就是这样。
但是退一步,你可以在RDD和DStream转换中做很多代码共享。无论您对批处理部件中的RDD做什么,都可以在流部分的DStream.transform()中重复使用。