我有一个像JavaPairRDD<String, Graph>
这样的PairRDD,其中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
。
我需要访问Graph.parameter
内的Graph.otherParameter
和external.sh
。
如何管理这种情况?
答案 0 :(得分:0)
发现它!!
只需覆盖我的POJO(图表)的toString()
方法即可显示所需的属性!!!
在这种情况下:
@Override
public String toString() {
return this.parameter + "," + this.otherParameter;
}
现在输出是:
(62,foo,bar)