使用 Spark 并行化集合
Parallelize a collection with Spark
我正在尝试使用 Spark 并行化集合,但文档中的示例似乎不起作用:
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);
JavaRDD<Integer> distData = sc.parallelize(data);
我正在根据记录创建一个 LabeledPoint
列表,每个记录都包含数据点 (double[]
) 和一个标签(默认值:true/false)。
public List<LabeledPoint> createLabeledPoints(List<ESRecord> records) {
List<LabeledPoint> points = new ArrayList<>();
for (ESRecord rec : records) {
points.add(new LabeledPoint(
rec.defaulted ? 1.0 : 0.0, Vectors.dense(rec.toDataPoints())));
}
return points;
}
public void test(List<ESRecord> records) {
SparkConf conf = new SparkConf().setAppName("SVM Classifier Example");
SparkContext sc = new SparkContext(conf);
List<LabeledPoint> points = createLabeledPoints(records);
JavaRDD<LabeledPoint> data = sc.parallelize(points);
...
}
parallelize 的函数签名不再采用一个参数,这是它在 spark-mllib_2.11 v1.3.0 中的样子:sc.parallelize(seq, numSlices, evidence)
关于如何让它工作有什么想法吗?
在Java中,你应该使用JavaSparkContext
。
https://spark.apache.org/docs/0.6.2/api/core/spark/api/java/JavaSparkContext.html
我正在尝试使用 Spark 并行化集合,但文档中的示例似乎不起作用:
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);
JavaRDD<Integer> distData = sc.parallelize(data);
我正在根据记录创建一个 LabeledPoint
列表,每个记录都包含数据点 (double[]
) 和一个标签(默认值:true/false)。
public List<LabeledPoint> createLabeledPoints(List<ESRecord> records) {
List<LabeledPoint> points = new ArrayList<>();
for (ESRecord rec : records) {
points.add(new LabeledPoint(
rec.defaulted ? 1.0 : 0.0, Vectors.dense(rec.toDataPoints())));
}
return points;
}
public void test(List<ESRecord> records) {
SparkConf conf = new SparkConf().setAppName("SVM Classifier Example");
SparkContext sc = new SparkContext(conf);
List<LabeledPoint> points = createLabeledPoints(records);
JavaRDD<LabeledPoint> data = sc.parallelize(points);
...
}
parallelize 的函数签名不再采用一个参数,这是它在 spark-mllib_2.11 v1.3.0 中的样子:sc.parallelize(seq, numSlices, evidence)
关于如何让它工作有什么想法吗?
在Java中,你应该使用JavaSparkContext
。
https://spark.apache.org/docs/0.6.2/api/core/spark/api/java/JavaSparkContext.html