Spark: пропущенная функция в java-объекте не работает в искровой среде - PullRequest
0 голосов
/ 31 октября 2019

Написание моей первой спарк-программы и, наконец, некоторые базовые вещи работают, но теперь они выводят не совпадающие с данными из java-программы, которую я мигрирую.

Исходная Java-программа отправляется в базу данных и заполняетсямассив с данными за несколько лет, и я затем передал бы его другому объекту, который выполнил бы несколько анализов и выложил бы результаты, например, средние значения, но некоторые точки данных были бы более сложными, поэтому я не могу просто преобразовать все в Scala.

У меня есть искра, загружающая набор данных, и я могу подтвердить, что он загружает его правильно в мой массив, например

MyJavaOb{

int sales
int year

  int getSales(){
   return sales;
 }

}

И у меня есть массив этих

MyJavaOb [] myArr

Который правильно загружен из искры

2016, 500 2017, 900 2018, 700

Но теперь я хочу передать это моему объекту анализа, который немного сложнее. Я пишу только одну метрику, но у меня их много.

    MyAnalysisObj{

    final MyJavaOb[] arr;
     MyAnalysisObj(MyJavaOb [] arr){
      this.arr= arr;
    }

      getTotSales(){
        return getAvg(MyJavaOb::getSales);
     }

      getAvg(Function<? super MyJavaOb,Integer> x){
         int tot=0
          for(){
             tot = tot + x.apply()
           }
         return tot;
      }


    }

returns 0;

Так что по какой-то причине в среде искры переданная функция не работает. Я могу подтвердить, что значения массива присутствуют, и это работает в Java, но не в Scala.

Редактировать # 1 Scala выглядит примерно так:

scala> myArr
Array[your.java.object. MyJavaOb] = Array(your.java.object. MyJavaOb@123kghj,your.java.object.MyJavaOb@343jhhsa, your.java.object.MyJavaOb@834dsfd)

scala> val test = new MyAnalysisObj(myArr)

scala> test. getTotSales
Int = 0

Примечание: одно тонкое отличие состоит в том, что мойобъект, который находится в массиве, возвращается фабрикой, и мы оперируем интерфейсом. Не уверен, почему это будет проблемой, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...