目前只有 scala的Graph实现的dijkstra算法,用java 翻译了一下,可以自己看看
public class GraphShortPathsTest
{
private static final ClassTag<Integer> tagInteger = ClassManifestFactory.classType( Integer.class );
private static final ClassTag<String> tagString = ClassManifestFactory.classType( String.class );
private static final ClassTag<Object> tagObject = ClassManifestFactory.classType( Object.class );
private static final ClassTag<Double> tagDouble = ClassManifestFactory.classType( Double.class );
private static final ClassTag<Tuple2<Object,Double>> tagTuple2 = ClassManifestFactory.classType( Tuple2.class );
private static final ClassTag<Tuple2<Boolean,Double>> tagTuple2Boolean = ClassManifestFactory.classType( Tuple2.class );
public static void main( String[] args )
{
SparkConf conf = new SparkConf().setAppName( "Graph short path" ).setMaster( "local" );
JavaSparkContext ctx = new JavaSparkContext( conf );
JavaRDD<Tuple2<Object, String>> verts = ctx.parallelize( Arrays.asList(
new Tuple2<Object, String>( 1L, "a" ),
new Tuple2<Object, String>( 2L, "b" ),
new Tuple2<Object, String>( 3L, "c" ),
new Tuple2<Object, String>( 4L, "d" ),
new Tuple2<Object, String>( 5L, "e" )) );
JavaRDD<Edge<Double>> edges = ctx.parallelize( Arrays.asList(
new Edge<Double>( 1L, 2L, 10.0 ),
new Edge<Double>( 2L, 3L, 20.0 ),
new Edge<Double>( 2L, 4L, 30.0 ),
new Edge<Double>( 4L, 5L, 80.0 ),
new Edge<Double>( 1L, 4L, 30.0 )
) );