У меня есть FlatMapFunction, которая перечисляет элементы в S3. Я хочу зарегистрировать каждый элемент в распределенном файловом кеше.
Это вообще возможно?
, т. Е. В моей работе:
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
...
... = myDataSet.flatMap(new S3Lister(env));
и в S3Lister
file:
...
String id = os.getKey().substring(os.getKey().lastIndexOf('/') + 1);
env.registerCachedFile("s3://" + bucket + os.getKey(), id);
...
, а затем доступ к нему из распределенного кэша в другой пользовательской функции coGroup.
Может ли это работать? Вам даже разрешено передавать ExecutionEnvironment таким образом?
Обновление :
Если нет, каков наилучший способ получить всю корзину S3 в распределенный файловый кешдля использования в работе Flink?