Мне нужна возможность обновлять значение во вложенном наборе данных. Для этого у меня есть вложенный набор данных в Spark. Он имеет следующую структуру схемы: -
root
|-- field_a: string (nullable = false)
|-- field_b: struct (nullable = true)
| |-- field_d: struct(nullable = false)
|-- field_not_to_update: string(nullable = true)
| |-- field_to_update: string(nullable = false)
| field_c: string (nullable = false)
Теперь я хотел обновить значение в field_to_update
в наборе данных. Я пробовал
aFooData.withColumn("field_b.field_d.field_to_update", lit("updated_val")
Также пробовал
aFooData.foreach(new ClassWithForEachFunction());
, где ClassWithForEachFunction implements ForEachFunction<Row>
и имеет метод public void call(Row aRow)
для обновления атрибута field_to_update. Пробовал то же самое с lamda, но он выбрасывал Task not serializable exception, поэтому должен go для длительного процесса.
Ни один из них пока не приносит результатов, и я получаю тот же набор данных с foreach и новым столбцом с именем field_b.field_d.field_to_update
во втором случае. Есть ли другие предложения по поводу того же?