
com.fnklabs.draenei.orm.analytics.Analytics Maven / Gradle / Ivy
package com.fnklabs.draenei.orm.analytics;
import com.fnklabs.draenei.CassandraClient;
import com.fnklabs.draenei.MetricsFactory;
import com.fnklabs.draenei.orm.DataProvider;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.hazelcast.core.ExecutionCallback;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.ICompletableFuture;
import com.hazelcast.core.IMap;
import com.hazelcast.mapreduce.Job;
import com.hazelcast.mapreduce.JobCompletableFuture;
import com.hazelcast.mapreduce.JobTracker;
import com.hazelcast.mapreduce.KeyValueSource;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigInteger;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class Analytics {
private static final Logger LOGGER = LoggerFactory.getLogger(Analytics.class);
private static final int V_NODES_SIZE = 256;
private final MetricsFactory metricsFactory;
@NotNull
private final HazelcastInstance hazelcastInstance;
@NotNull
private final CassandraClient cassandraClient;
public Analytics(@NotNull CassandraClient cassandraClient, @NotNull HazelcastInstance hazelcastInstance, MetricsFactory metricsFactory) {
this.hazelcastInstance = hazelcastInstance;
this.cassandraClient = cassandraClient;
this.metricsFactory = metricsFactory;
}
/**
* Load all data from DataProvider and execute ComputeTask over loaded data
*
* Note: Reducer result will be grouped by key
*
* @param dataProvider DataProvider from which will be loaded data
* @param computeTask Compute task
* @param Value type
* @param Output key from mapper
* @param Output value from mapper
* @param Output value from reducer
*
* @return Future for compute operation
*/
public ListenableFuture
© 2015 - 2025 Weber Informatics LLC | Privacy Policy