Spark 2.0.1
我有两个班级:
public class Key{
private Object[] values;
//a couple of other fields
public Object[] getKeyFields(){
return values;
}
}
public class Value{
private Object[] values;
//a couple of other fields
public Object[] getValues() {
return values;
}
}
现在我想对这些字段进行一些操作。
予。
JavaSparcContext sc = //
JavaPairRDD<Key, Value> rdd = sc.newAPIHadoopFile(...);
JavaPairRDD<Key, Object[]> rddArr = rddArr.mapValues(Value::getValues);
JavaPairRDD<String, Object[]> stringKeyRdd = rddArr.mapToPair(p -> {
return new Tuple2<>(p._1.toString(), p._2)
});
stringKeyRdd.sortByKey()
.saveAsHadoopFile(...);
II。
但是,如果我尝试使Key
- 数组成为JavaPairRDD
中的值,我的性能会下降。
JavaSparcContext sc = //
JavaPairRDD<Key, Value> rdd = sc.newAPIHadoopFile(...);
JavaPairRDD<Key, Object[]> rddArr = rddArr.mapValues(Value::getValues);
JavaPairRDD<String, Object[]> stringKeyRdd = rddArr.mapToPair(p -> {
return new Tuple2<>(p._1.toString(), p._1.getKeyFields()) // <--- Now keys
});
stringKeyRdd.sortByKey()
.saveAsHadoopFile(...);
结果:
问题: 为什么Shuffle Read和Shuffle Write在这种情况下几乎增加了两倍?