/** * Empty constructor. Initialize with default classes or null. */ public GiraphClasses() { computationFactoryClass = (Class) DefaultComputationFactory.class; giraphTypes = new GiraphTypes<I, V, E>(); outEdgesClass = (Class) ByteArrayEdges.class; inputOutEdgesClass = (Class) ByteArrayEdges.class; graphPartitionerFactoryClass = (Class) HashPartitionerFactory.class; aggregatorWriterClass = TextAggregatorWriter.class; vertexResolverClass = (Class) DefaultVertexResolver.class; vertexValueCombinerClass = (Class) DefaultVertexValueCombiner.class; workerContextClass = DefaultWorkerContext.class; masterComputeClass = DefaultMasterCompute.class; partitionClass = (Class) SimplePartition.class; edgeInputFilterClass = (Class) DefaultEdgeInputFilter.class; vertexInputFilterClass = (Class) DefaultVertexInputFilter.class; }
/** * Get Edge Value class * * @return Edge Value class */ public Class<E> getEdgeValueClass() { return giraphTypes.getEdgeValueClass(); }
/** * Get Vertex implementation class * * @return Vertex implementation class */ public Class<? extends Vertex> getVertexClass() { return giraphTypes.getVertexClass(); }
/** * Read types from a {@link Configuration}. * First tries to read them directly from the configuration options. * If that doesn't work, tries to infer from {@link TypesHolder}. * * @param conf Configuration * @param <IX> vertex id * @param <VX> vertex value * @param <EX> edge value * @return GiraphTypes */ public static <IX extends WritableComparable, VX extends Writable, EX extends Writable> GiraphTypes<IX, VX, EX> readFrom( Configuration conf) { GiraphTypes<IX, VX, EX> types = new GiraphTypes<IX, VX, EX>(); types.readDirect(conf); if (!types.hasData()) { Class<? extends TypesHolder> klass = getTypesHolderClass(conf); if (klass != null) { types.inferFrom(klass); } } return types; }
CommandLine cmd) { if (BenchmarkOption.JYTHON.optionTurnedOn(cmd)) { GiraphTypes types = new GiraphTypes(); types.inferFrom(PageRankComputation.class); types.writeIfUnset(conf); JythonUtils.init(conf, "PageRank"); } else {
/** * Helper to handle Computations implemented in Python. * * @param conf Configuration * @param cmd CommandLine * @param scriptPath Path to python script */ private static void handleJythonComputation(GiraphConfiguration conf, CommandLine cmd, String scriptPath) { String jythonClass = cmd.getOptionValue("jythonClass"); if (jythonClass == null) { throw new IllegalArgumentException( "handleJythonComputation: Need to set Jython Computation class " + "name with --jythonClass"); } String typesHolderClass = cmd.getOptionValue("typesHolder"); if (typesHolderClass == null) { throw new IllegalArgumentException( "handleJythonComputation: Need to set TypesHolder class name " + "with --typesHolder"); } Path path = new Path(scriptPath); Path remotePath = DistributedCacheUtils.copyAndAdd(path, conf); ScriptLoader.setScriptsToLoad(conf, remotePath.toString(), DeployType.DISTRIBUTED_CACHE, Language.JYTHON); GiraphTypes.readFrom(conf).writeIfUnset(conf); JythonUtils.init(conf, jythonClass); }
giraphTypes = GiraphTypes.readFrom(conf); computationFactoryClass = (Class<? extends ComputationFactory<I, V, E, MessageEncodeAndStoreType.BYTEARRAY_PER_PARTITION); outgoingMessageClasses = new DefaultMessageClasses( giraphTypes.getInitialOutgoingMessageValueClass(), OUTGOING_MESSAGE_VALUE_FACTORY_CLASS.get(conf), MESSAGE_COMBINER_CLASS.get(conf),
/** * Get Vertex Value class * * @return Vertex Value class */ public Class<V> getVertexValueClass() { return giraphTypes.getVertexValueClass(); }
/** * Get Vertex ID class * * @return Vertex ID class */ public Class<I> getVertexIdClass() { return giraphTypes.getVertexIdClass(); }
/** * Get vertex value type * * @return vertex value type */ private Class<? extends Writable> vertexValueType() { return conf.getGiraphTypes().getVertexValueClass(); }
/** * Get vertex id type * * @return vertex id type */ private Class<? extends WritableComparable> vertexIndexType() { return conf.getGiraphTypes().getVertexIdClass(); }
/** * Get edge value type * * @return edge value type */ private Class<? extends Writable> edgeValueType() { return conf.getGiraphTypes().getEdgeValueClass(); }