Поддерживает ли CDAP несколько входов в плагинах SparkCompute и SparkSink?
Я ищу способ реализации плагина SparkCompute (или SparkSink), который использует несколько входов.
Глядя на интерфейс, оба SparkCompute
а также SparkSink
Плагины ограничены, чтобы потреблять только один.
Это выдержка из io.cdap.cdap.etl.api.batch.SparkCompute
/**
* Transform the input and return the output to be sent to the next stage in the pipeline.
*
* @param context {@link SparkExecutionPluginContext} for this job
* @param input input data to be transformed
* @throws Exception if there is an error during this method invocation
*/
public abstract JavaRDD<OUT> transform(SparkExecutionPluginContext context, JavaRDD<IN> input) throws Exception;
(единственный JavaRDD<IN>
параметр находится в сигнатуре метода)
Есть ли способ получить доступ ко всем входам (через SparkExecutionPluginContext context
или что-то подобное)?
1 ответ
В конвейере CDAP, когда этап имеет несколько входных этапов, он получает объединение всех входящих данных. Это причина того, что структура конвейера не позволит вам создать конвейер, в котором входящие схемы отличаются. Единственным исключением являются плагины для столяров. Таким образом, он обрабатывает несколько входных данных, но не так, чтобы вы могли различать их.