linkedin/camus — pull request #26 by ottomata (2013-08-19 16:02:10+00:00)
Title: etl.default.timezone not respected

It seems that ```EtlMultiOutputFormat``` is configured to read in ```etl.default.timezone``` from a camus.properties file, but no where is this value actually used.

```DefaultPartitioner``` manually sets ```DateTimeFormatter OUTPUT_DATE_FORMAT``` by calling ```DateUtils
.getDateTimeFormatter("YYYY/MM/dd/HH")``` method without the second argument ```DateTimeZone timeZone```. Without a timezone, DateUtils defaults to PST.

I'd submit a pull request to make DateUtils respect the value of ```etl.default.timezone```, but I'm not sure how best to do this. ```DateUtils``` doesn't have any method that takes a ```JobContext```. I could make```DefaultPartitioner.generatePartitionedPath``` call ```getDateTimeFormatter(String str, DateTimeZone timeZone)``` instead of using the final PST ```OUTPUT_DATE_FORMAT````, but perhaps this will result in too many calls for a config property that only needs to be set once.

I've run into similar issues when trying to add config properties to my concrete ```RecordWriterProvider``` implementation. I think this issue and the ones I am running into could be alleviated if the interfaces had constructors that took JobContext objects as arguments, and ```EtlMultiOutputFormat``` would call them with its JobContext object. Then implementers could save whatever properties they wanted when the concrete instance was instantiated for use later.