Как реализовать Java версию Scala функции вложенного массива? - PullRequest
0 голосов
/ 16 марта 2020

Построение довольно сложного преобразования в Scala и Java (для сравнения накладных расходов на производительность / кодирование d для последующего рефакторинга) .. часть которых извлекает вложенные (транспонированные) значения в набор столбцов для дальнейшего извлечения - но Я не могу понять Java эквивалент следующей Scala функции шага. (это прекрасно работает в Scala)

val df2= df.select(
        col("ID"),
        array((0 to 21).map(i => struct(
          col("alabel").getItem(i).alias("label"),
          col("aname").getItem(i).alias("name"),
          col("prop_values.a_binary").getItem(i).alias("binary"),
          col("prop_values.a_float").getItem(i).alias("fval"),
          col("prop_values.a_int").getItem(i).alias("ival"),
          col("prop_values.a_string").getItem(i).alias("sval"))): _*).alias("concat_col"))

Я думаю, что конструктор столбца массива должен go что-то вроде:

val df2= df.select(
        col("ID"), functions.array(
  for(int i=0; i<21; i++) { 
    functions.map(i => functions.struct(
    ...

... но я не могу получить для l oop в правильный синтаксис.

Я следовал некоторым лямбда-примерам, чтобы попытаться выяснить это, и я не уверен, должен ли .map оставаться scala function.map или преобразовываться в Java HashMap или что-то еще.

Я склоняюсь к тому, чтобы оставить там объекты scala (col,array,map) (чтобы сохранить их как можно более параллельными), но пока конструкция for l oop не работает с это или Java объекты, так что я думаю, что способ, которым я вызываю итерацию / карту, неверен.

Любая помощь очень ценится!

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