处理数据的模式是我有一条记录流,其中包含一些信息A。这些记录由某些ID分片。该信息A取决于当前记录,上一次计算的结果以及较大的查找表。查找表不经常更改,更改很小。我知道我可以使用mapWithState / flatMapWithState进行有状态的计算。但是,我应该如何处理查找表?惯用的方法是也将其作为状态来处理(如A),但是查找表的大小可能对性能/内存(例如快照时)非常可怕。
我目前正在考虑使其成为受读/写锁保护的共享资源。有没有更好的方法来处理这种模式?
当我只想在 Apache Spark 中获取前 N 条记录时,我使用:
sc.textFile(path_to_files).take(10)
Run Code Online (Sandbox Code Playgroud)
它将快速返回并给我前 10 行文本。当我在 Apache Flink 中做类似的事情时:
env.readTextFile(path_to_files).first(10).print()
Run Code Online (Sandbox Code Playgroud)
它将在返回结果之前完全读取所有文件。这是为什么?
apache-flink ×2