Java源码示例:org.apache.pig.LoadPredicatePushdown

示例1
@Override
public boolean check(OperatorPlan matched) throws FrontendException {
    loLoad = (LOLoad)matched.getSources().get(0);
    // Match filter.
    List<Operator> succeds = currentPlan.getSuccessors( loLoad );
    if( succeds == null || succeds.size() == 0 || !( succeds.get(0) instanceof LOFilter ) )
        return false;
    loFilter = (LOFilter) succeds.get(0);

    // Filter has dependency other than load, skip optimization
    if (currentPlan.getSoftLinkPredecessors(loFilter) != null)
        return false;

    // we have to check more only if LoadFunc implements LoadPredicatePushdown
    loadFunc = loLoad.getLoadFunc();
    if (!(loadFunc instanceof LoadPredicatePushdown)) {
        return false;
    }

    loadPredPushdown = (LoadPredicatePushdown) loadFunc;
    try {
        predicateFields = loadPredPushdown.getPredicateFields(loLoad.getFileSpec()
                .getFileName(), new Job(loLoad.getConfiguration()));
    } catch (IOException e) {
        throw new FrontendException(e);
    }
    if (predicateFields == null || predicateFields.size() == 0) {
        return false;
    }

    return true;
}