All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.alink.operator.batch.utils.MapBatchOp Maven / Gradle / Ivy

package com.alibaba.alink.operator.batch.utils;

import org.apache.flink.api.java.DataSet;
import org.apache.flink.ml.api.misc.param.Params;
import org.apache.flink.table.api.TableSchema;
import org.apache.flink.types.Row;

import com.alibaba.alink.common.mapper.Mapper;
import com.alibaba.alink.common.mapper.MapperAdapter;
import com.alibaba.alink.operator.batch.BatchOperator;

import java.util.function.BiFunction;

/**
 * class for a flat map {@link BatchOperator}.
 *
 * @param  class type of the {@link MapBatchOp} implementation itself.
 */
public class MapBatchOp> extends BatchOperator {

	private final BiFunction mapperBuilder;

	public MapBatchOp(BiFunction mapperBuilder, Params params) {
		super(params);
		this.mapperBuilder = mapperBuilder;
	}


	@Override
	public T linkFrom(BatchOperator... inputs) {
		BatchOperator in = checkAndGetFirst(inputs);

		try {
			Mapper mapper = this.mapperBuilder.apply(in.getSchema(), this.getParams());
			DataSet resultRows = in.getDataSet().map(new MapperAdapter(mapper));
			TableSchema resultSchema = mapper.getOutputSchema();
			this.setOutput(resultRows, resultSchema);
			return (T) this;
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy