textFileStream中的混淆

时间:2017-03-03 16:35:54

标签: amazon-web-services apache-spark amazon-s3 spark-streaming

我正在使用textFileStream将数据导入Spark Streaming。但是数据仅针对一批进行处理。我的第一个问题是它不会从文件中流式传输每条记录吗?

根据https://docs.databricks.com/spark/latest/rdd-streaming/debugging-streaming-applications.html For TextFileStream, since files are input, the # of input events is always 0. In such cases, you can look at the “Completed Batches” section in the notebook to figure out how to find more information.

其次,我想知道Spark Engine正在处理多少条记录。例如,如果我流式传输1GB的文件,包含100K数据记录,我想知道Spark Streaming执行它的程度。< / p>

任何人都可以分享他们的想法或一些有用的链接。任何帮助将不胜感激。

感谢。

Spark版本:2.0.1 通过textFileStream从Amazon s3获取数据

1 个答案:

答案 0 :(得分:0)

没有直接的方法可以看到这一点,但您可以使用自定义代码实现此目的。

例如,当您处理textFileStream生成的dStream时,使用

    dStream.forEachRDD{rdd => rdd.forEachPartition{part => { }} }

所以你可以简单地在rdd.forEachPartition {}块中添加一些代码,它将更新在任何累加器中处理的记录,或者在Kafka主题中添加该信息,或者在zookeeper中添加该信息,甚至更新mysql数据库:)< / p>

dStream.forEachRDD{rdd => rdd.forEachPartition{part => {
            var recordProcessed:Int = 0; ...
            part.foreach{...;recordProcessed+=1}
            //update recordProcessed in kafka/HBase/Mysql/Zookepeer
    }} }

可以进一步使用可视化工具来显示没有记录过程。