package com.github.projectflink.generators.tpch.generators.core; import io.airlift.tpch.Customer; import io.airlift.tpch.CustomerGenerator; import io.airlift.tpch.LineItem; import io.airlift.tpch.LineItemGenerator; import io.airlift.tpch.Nation; import io.airlift.tpch.NationGenerator; import io.airlift.tpch.Order; import io.airlift.tpch.OrderGenerator; import io.airlift.tpch.Part; import io.airlift.tpch.PartGenerator; import io.airlift.tpch.PartSupplier; import io.airlift.tpch.PartSupplierGenerator; import io.airlift.tpch.Region; import io.airlift.tpch.RegionGenerator; import io.airlift.tpch.Supplier; import io.airlift.tpch.SupplierGenerator; import org.apache.flink.api.java.DataSet; import org.apache.flink.api.java.ExecutionEnvironment; import org.apache.flink.util.SplittableIterator; public class DistributedTPCH { private double scale; private ExecutionEnvironment env; public DistributedTPCH(ExecutionEnvironment env) { this.env = env; } public void setScale(double scale) { this.scale = scale; } public double getScale() { return scale; } public DataSet<Part> generateParts() { return getGenerator(PartGenerator.class, Part.class); } public DataSet<LineItem> generateLineItems() { return getGenerator(LineItemGenerator.class, LineItem.class); } public DataSet<Order> generateOrders() { return getGenerator(OrderGenerator.class, Order.class); } public DataSet<Supplier> generateSuppliers() { return getGenerator(SupplierGenerator.class, Supplier.class); } public DataSet<Region> generateRegions() { return getGenerator(RegionGenerator.class, Region.class); } public DataSet<Nation> generateNations() { return getGenerator(NationGenerator.class, Nation.class); } public DataSet<Customer> generateCustomers() { return getGenerator(CustomerGenerator.class, Customer.class); } public DataSet<PartSupplier> generatePartSuppliers() { return getGenerator(PartSupplierGenerator.class, PartSupplier.class); } public <T> DataSet<T> getGenerator(Class<? extends Iterable<T>> generatorClass, Class<T> type) { SplittableIterator<T> si = new TPCHGeneratorSplittableIterator(scale, env.getParallelism(), generatorClass); return env.fromParallelCollection(si, type).name("Generator: "+generatorClass); } }