Package org.apache.jena.tdbloader4

Source Code of org.apache.jena.tdbloader4.Utils

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.jena.tdbloader4;

import java.io.StringWriter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.JobContext;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.jena.tdbloader4.io.MapReduceLabelToNode;
import org.apache.jena.tdbloader4.partitioners.TotalOrderPartitioner;
import org.openjena.atlas.lib.Hex;
import org.openjena.riot.ErrorHandlerFactory;
import org.openjena.riot.lang.LabelToNode;
import org.openjena.riot.out.NodeToLabel;
import org.openjena.riot.out.OutputLangUtils;
import org.openjena.riot.system.IRIResolver;
import org.openjena.riot.system.ParserProfile;
import org.openjena.riot.system.ParserProfileBase;
import org.openjena.riot.system.Prologue;
import org.slf4j.Logger;

import com.hp.hpl.jena.graph.Node;

public class Utils {

    public static String toString(String[] args) {
      StringBuffer sb = new StringBuffer();
      sb.append("{");
      for ( String arg : args ) sb.append(arg).append(", ");
      if ( sb.length() > 2 ) sb.delete(sb.length()-2, sb.length());
      sb.append("}");
      return sb.toString();
  }

  public static final NodeToLabel nodeToLabel = NodeToLabel.createBNodeByLabelAsGiven();
    public static String serialize(Node node) {
        StringWriter out = new StringWriter();
        OutputLangUtils.output(out, node, null, nodeToLabel);
        return out.toString();
    }

    public static ParserProfile createParserProfile(JobContext context, Path path) {
        Prologue prologue = new Prologue(null, IRIResolver.createNoResolve());
        LabelToNode labelMapping = new MapReduceLabelToNode(context, path);
        return new ParserProfileBase(prologue, ErrorHandlerFactory.errorHandlerStd, labelMapping);
    }

  public static byte[] toHex(long id) {
      byte[] b = new byte[16];
      Hex.formatUnsignedLongHex(b, 0, id, 16);
      return b;
  }

  public static void setReducers(Job job, Configuration configuration, Logger log) {
      boolean runLocal = configuration.getBoolean(Constants.OPTION_RUN_LOCAL, Constants.OPTION_RUN_LOCAL_DEFAULT);
      int num_reducers = configuration.getInt(Constants.OPTION_NUM_REDUCERS, Constants.OPTION_NUM_REDUCERS_DEFAULT);
 
      // TODO: should we comment this out and let Hadoop decide the number of reducers?
      if ( runLocal ) {
        if (log != null) log.debug("Setting number of reducers to {}", 1);
          job.setNumReduceTasks(1);
      } else {
        if ( Constants.NAME_FOURTH.equals( job.getJobName() ) ) {
        job.setPartitionerClass(TotalOrderPartitioner.class);
        num_reducers = 9 * num_reducers;
        }
        job.setNumReduceTasks(num_reducers);
        if (log != null) log.debug("Setting number of reducers to {}", num_reducers);
      }
  }

  public static void log(Job job, Logger log) throws ClassNotFoundException {
    log.debug ("{} -> {} ({}, {}) -> {}#{} ({}, {}) -> {}",
      new Object[]{
        job.getInputFormatClass().getSimpleName(), job.getMapperClass().getSimpleName(), job.getMapOutputKeyClass().getSimpleName(), job.getMapOutputValueClass().getSimpleName(),
        job.getReducerClass().getSimpleName(), job.getNumReduceTasks(), job.getOutputKeyClass().getSimpleName(), job.getOutputValueClass().getSimpleName(), job.getOutputFormatClass().getSimpleName()
      }
    );
    Path[] inputs = FileInputFormat.getInputPaths(job);
    Path output = FileOutputFormat.getOutputPath(job);
    log.debug("input: {}", inputs[0]);
    log.debug("output: {}", output);
  }

}
TOP

Related Classes of org.apache.jena.tdbloader4.Utils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.