Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark Java:向函数传递可变数量的参数_Java_Apache Spark - Fatal编程技术网

Spark 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

请参阅第“”节。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());
}


我该怎么做

尝试在实现的方法中使用省略号,如下所示

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);
      }
      });