Search in sources :

Example 1 with HBaseProfilerClient

use of org.apache.metron.profiler.client.HBaseProfilerClient in project metron by apache.

the class GetProfile method apply.

/**
 * Apply the function.
 * @param args The function arguments.
 * @param context
 */
@Override
public Object apply(List<Object> args, Context context) throws ParseException {
    String profile = getArg(0, String.class, args);
    String entity = getArg(1, String.class, args);
    Optional<List<ProfilePeriod>> periods = Optional.ofNullable(getArg(2, List.class, args));
    // Optional arguments
    @SuppressWarnings("unchecked") List<Object> groups = null;
    Map configOverridesMap = null;
    if (args.size() < 4) {
        // no optional args, so default 'groups' and configOverridesMap remains null.
        groups = new ArrayList<>(0);
    } else if (args.get(3) instanceof List) {
        // correct extensible usage
        groups = getArg(3, List.class, args);
        if (args.size() >= 5) {
            configOverridesMap = getArg(4, Map.class, args);
            if (configOverridesMap.isEmpty())
                configOverridesMap = null;
        }
    } else {
        // Deprecated "varargs" style usage for groups_list
        // configOverridesMap cannot be specified so it remains null.
        groups = getGroupsArg(3, args);
    }
    Map<String, Object> effectiveConfig = getEffectiveConfig(context, configOverridesMap);
    Object defaultValue = null;
    // lazily create new profiler client if needed
    if (client == null || !cachedConfigMap.equals(effectiveConfig)) {
        RowKeyBuilder rowKeyBuilder = getRowKeyBuilder(effectiveConfig);
        ColumnBuilder columnBuilder = getColumnBuilder(effectiveConfig);
        HTableInterface table = getTable(effectiveConfig);
        client = new HBaseProfilerClient(table, rowKeyBuilder, columnBuilder);
        cachedConfigMap = effectiveConfig;
    }
    if (cachedConfigMap != null) {
        defaultValue = ProfilerClientConfig.PROFILER_DEFAULT_VALUE.get(cachedConfigMap);
    }
    return client.fetch(Object.class, profile, entity, groups, periods.orElse(new ArrayList<>(0)), Optional.ofNullable(defaultValue));
}
Also used : ArrayList(java.util.ArrayList) SaltyRowKeyBuilder(org.apache.metron.profiler.hbase.SaltyRowKeyBuilder) RowKeyBuilder(org.apache.metron.profiler.hbase.RowKeyBuilder) HTableInterface(org.apache.hadoop.hbase.client.HTableInterface) HBaseProfilerClient(org.apache.metron.profiler.client.HBaseProfilerClient) ArrayList(java.util.ArrayList) List(java.util.List) ColumnBuilder(org.apache.metron.profiler.hbase.ColumnBuilder) ValueOnlyColumnBuilder(org.apache.metron.profiler.hbase.ValueOnlyColumnBuilder) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 HTableInterface (org.apache.hadoop.hbase.client.HTableInterface)1 HBaseProfilerClient (org.apache.metron.profiler.client.HBaseProfilerClient)1 ColumnBuilder (org.apache.metron.profiler.hbase.ColumnBuilder)1 RowKeyBuilder (org.apache.metron.profiler.hbase.RowKeyBuilder)1 SaltyRowKeyBuilder (org.apache.metron.profiler.hbase.SaltyRowKeyBuilder)1 ValueOnlyColumnBuilder (org.apache.metron.profiler.hbase.ValueOnlyColumnBuilder)1