2016-03-14 122 views
1

need to use SparkContext instead of JavaSparkContext for the accumulableCollection (if you don't agree check out the linked question并回答它,请)Java在Spark中的Scala Seq?

澄清问题:SparkContext有Java,但希望Scala的序列。我如何让它开心 - 在Java中?

我有这段代码做一个简单的jsc.parallelize我用JavaSparkContext,但SparkContext想要一个Scala集合。我在这里想到了我正在构建一个Scala范围并将其转换为Java列表,不知道如何让核心范围成为Scala Seq,这就是parallelize from SparkContext is asking for

// The JavaSparkContext way, was trying to get around MAXINT limit, not the issue here 
    // setup bogus Lists of size M and N for parallelize 
    //List<Integer> rangeM = rangeClosed(startM, endM).boxed().collect(Collectors.toList()); 
    //List<Integer> rangeN = rangeClosed(startN, endN).boxed().collect(Collectors.toList()); 

钱线是下一个,我如何创建一个Java中的Scala Seq来并行化?

// these lists above need to be scala objects now that we switched to SparkContext 
    scala.collection.Seq<Integer> rangeMscala = scala.collection.immutable.List(startM to endM); 

    // setup sparkConf and create SparkContext 
    ... SparkConf setup 
    SparkContext jsc = new SparkContext(sparkConf); 

    RDD<Integer> dataSetMscala = jsc.parallelize(rangeMscala); 
+0

我正在看[JavaConversions](http://docs.scala-lang.org/overviews/collections/conversions-between-java-and-scala-collections)对象,看起来像它在两个方向工作,在Java中还是在斯卡拉? – JimLohse

+1

我怀疑你可以在Java中创建一个'Seq',因为它是'trait',并且在Java中没有等价物。我认为在Scala中使用'JavaConversions'是正确的方法。 – davidshen84

+0

我想也许我正在复制[this](http://stackoverflow.com/questions/35988315/convert-java-list-to-scala-seq?rq=1),我会尝试解决方案,并会发布一个回答如果它的工作,似乎像JavaConversion可以在Java中使用,如果我正确读取此:http://stackoverflow.com/questions/35988315/convert-java-list-to-scala-seq?rq=1 – JimLohse

回答

0

你应该使用这种方式:

scala.collection.immutable.Range rangeMscala = 
    scala.collection.immutable.Range$.MODULE$.apply(1, 10); 

SparkContext sc = new SparkContext(); 

RDD dataSetMscala = 
    sc.parallelize(rangeMscala, 3, scala.reflect.ClassTag$.MODULE$.Object()); 

希望它能帮助!问候

+0

我很感激这个帮助,我通过添加下面这行来澄清我的问题:澄清问题:SparkContext在Java中可用,但希望斯卡拉序列。我如何让它开心 - 在Java中? – JimLohse

+0

好吧,你是对的,我误解了这个问题;我修改了我的答案以适应您的需求,请检查它。 – opuertas

+0

我明白了,我不是dv,但是我把uv排成了平等状态:)稍后再尝试一下,让你知道。目前看起来不错。 – JimLohse