我有一个像 JavaPairRDD<String, Graph>
这样的配对,其中 Graph
是我使用
PairFunction<Row, String, Graph> pairFunction = new PairFunction<Row, String, Graph>() {
private static final long serialVersionUID = 1L;
public Tuple2<String, Graph> call(Row row) throws Exception {
Integer parameter = row.getAs("foo");
String otherParameter = row.getAs("bar");
Graph graph = new Graph( parameter, otherParameter );
String key = someKeyGenerator();
return new Tuple2<String, Graph>( key, graph );
}
};
现在,我需要使用myPairRdd.pipe('external.sh')
运行外部程序,但我认为Spark将通过Stdin将Graph
对象传递给external.sh
。
我需要在external.sh
中访问Graph.parameter
和Graph.otherParameter
。
如何管理这种情况?
找到了它!!
只需要覆盖我的pojo(图)的toString()
方法即可公开所需的属性!!!
在这种情况下:
@Override
public String toString() {
return this.parameter + "," + this.otherParameter;
}
现在输出为:
(62,foo,bar)