Here is the question:
Assume I have a pipe and I want to rename all the fields in the pipe programmatically, meaning that I don't want to hard code the field names in my code. Any idea how I can do this?
As a concrete example, assume I have a pipe with two fields: "name" and "age" and I want to rename these fields to "employee_name" and "employee_age". Obviously the natural solution is to write a piece of code as below:
pipe.rename(('name, 'age) -> ('employee_name, 'employee_age))
or
pipe.rename(new Fields("name", "age") -> new Fields("employee_name", "employee_age"))
However, what I need is to be able to iterate through all fields in the pipe without knowing their names.
There are a couple of methods (resolveIncomingOperationArgumentFields and resolveIncomingOperationPassThroughFields) callable on a pipe which look promising but the issue is that they both take and input argument of type cascading.flow.planner.Scope which I don't know where can I get it from in a scalding job.
Another solution that comes to my mind is using "each" method on the pipe and implementing a cascading function and pass it to the each statement. But I was now able to find any sample code for that either.
Thanks!