Spark Java:向函数传递可变数量的参数
请参阅第“”节。Java部分 这个例子很有效。但是我对这个特殊的代码片段有一个问题Spark Java:向函数传递可变数量的参数,java,apache-spark,Java,Apache Spark,请参阅第“”节。Java部分 这个例子很有效。但是我对这个特殊的代码片段有一个问题 JavaRDD<Row> rowRDD = people.map( new Function<String, Row>() { public Row call(String record) throws Exception { String[] fields = record.split(","); return Row.create(fields[0], fields[1].trim
JavaRDD<Row> rowRDD = people.map(
new Function<String, Row>() {
public Row call(String record) throws Exception {
String[] fields = record.split(",");
return Row.create(fields[0], fields[1].trim());
}
或
我该怎么做 尝试在实现的方法中使用省略号,如下所示
public static void create(String ...arg) { ... }
省略接受
n
参数数。您可以通过在参数后使用三个点来指定获取多个参数的方法,例如:
public static <return_type> create(String...args){
// Yoo can now use the String[] args
}
公共静态创建(字符串…参数){
//Yoo现在可以使用字符串[]args
}
将替换为所需的退货类型。
请更改调用方法的签名,因为您没有为它指定返回类型 以下是我在同样情况下所做的
new Function<String, Row>(String s) {
public Row call(String s){
int n = /* width of actual schema */
Object rec[] = new Object[n];
for( int i = 0; i < n; ++i )
rec[i] = /* Something that aligns with the type of #i field */
return Row.create( rec );
}
}
新函数(字符串s){
公用行调用(字符串s){
int n=/*实际架构的宽度*/
Object rec[]=新对象[n];
对于(int i=0;i
这里可能有龙。我的版本可以编译,看起来不错,还没有经过测试。以下是您的操作方法。为我工作
JavaRDD<Row> rowRDD = people.map(
new Function<String, Row>() {
public Row call(String record) throws Exception {
String[] fields = record.split(",");
//return Row.create(fields[0], fields[1].trim());
Object[] fields_converted = fields;
return Row.create(fields_converted);
}
});
JavaRDD rowRDD=people.map(
新函数(){
公用行调用(字符串记录)引发异常{
String[]fields=record.split(“,”);
//返回Row.create(字段[0],字段[1].trim());
对象[]字段\u转换=字段;
返回行。创建(字段\u转换);
}
});
有人建议“争论后三点”可以解决我的问题。不会的。我调用的方法已经接受了动态数量的参数。问题在于打电话。我不知道在编译时要传递多少个参数给它。我会在运行时知道它。问题不在于功能。
new Function<String, Row>(String s) {
public Row call(String s){
int n = /* width of actual schema */
Object rec[] = new Object[n];
for( int i = 0; i < n; ++i )
rec[i] = /* Something that aligns with the type of #i field */
return Row.create( rec );
}
}
JavaRDD<Row> rowRDD = people.map(
new Function<String, Row>() {
public Row call(String record) throws Exception {
String[] fields = record.split(",");
//return Row.create(fields[0], fields[1].trim());
Object[] fields_converted = fields;
return Row.create(fields_converted);
}
});