Как передать всю строку в качестве аргумента в UDF в Spark (Java) и вернуть ту же строку с измененными значениями столбцов? - PullRequest
0 голосов
/ 02 мая 2018

Мой пример использования - когда искровой UDF принимает строку в качестве входа и возвращает ту же строку с измененными столбцами на основе некоторых динамических условий, генерируемых при переходе в трансляции хэш-карты. Все, что нужно сделать UDF - это получить столбцы из HashMap, изменить его с указанным условием и вернуть новую строку с некоторыми существующими значениями из входной строки и некоторыми обновленными значениями, полученными из условий широковещательного HashMap. Если нет, возвращает входную строку как есть. Я не уверен, как вызвать этот UDF для всей строки и как в UDF можно выбрать определенный динамический столбец на основе его имени и применить условия. и так как это динамический и общий udf, я не могу сделать пользовательский StrutType, он должен быть динамическим

so My data looks like, where a,b,c and d are column names
a  |  b  |  c  |  d  |
12 |  ac | qa  |  rt |

Карта выглядит так

a -> a*2+b
b -> c+d

, поэтому для всех значений в a и b должны быть изменены значения карты. Эта карта транслируется и является динамичной. функция должна быть способна принимать в любой строке и читать карту и соответственно поэтому я ожидаю, что результат будет как

a    |  b    |  c  |  d  |
24ac |  qart | qa  |  rt |


 and the next dataset can be 
    q  |  p  |  c  |  d  |
    0  |  !@ |  R% |  qa |

Карта будет выглядеть так

q -> q^2+2
c -> q+p+c+d

поэтому ожидаю, что результат будет

q    |  p    |  c       |  d  |
2    |  !@   | 0!@R%qa  |  rt |

все динамически обрабатываются

...