Построение довольно сложного преобразования в 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 объекты, так что я думаю, что способ, которым я вызываю итерацию / карту, неверен.
Любая помощь очень ценится!