【问题标题】:Filestreams limitations in Spark StreamingSpark Streaming 中的文件流限制
【发布时间】:2016-08-23 03:25:03
【问题描述】:

我需要开发一个流式应用程序,它可以从多个来源读取一些会话日志。 批处理间隔可以在 5 分钟左右..

问题是我在每批中获得的文件差异很大。在每一批中,我可能会得到一些 10 兆字节的文件,然后在另一批中得到一些大约 20GB 的文件。

我想知道是否有任何方法可以处理这个问题。文件流可以为每个批次生成的 RDD 的大小是否有任何限制?

我可以限制火花流将每批中固定数量的数据读取到 RDD 中吗?

【问题讨论】:

    标签: spark-streaming


    【解决方案1】:

    据我所知,没有直接的方法可以限制这一点。要考虑的文件在 FileStream 中的 isNewFile 私有函数中控制。根据代码,我可以想到一种解决方法。

    使用过滤功能来限制要读取的文件数量。任何超过 10 个的文件都返回 false 并使用 touch 命令更新文件的时间戳以考虑用于下一个窗口。

    globalcounter=10
    val filterF = new Function[Path, Boolean] {
      def apply(file: Path): Boolean = {
        globalcounter --
        if(globalcounter > 0) {
          return true // consider only 10 files.
        }
        // touch the file so that timestamp of the file is updated. 
        return false 
      }
    }
    

    【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2016-03-12
    • 1970-01-01
    • 2018-12-15
    • 2016-11-28
    • 2017-07-10
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多