On Thu, Dec 1, 2016 at 4:44 PM, Edward Capriolo <edlinuxg...@gmail.com> wrote:
> > I am not sure you saw my reply on thread but I believe everyone's needs > can be met I will copy that here: > I saw it, but the real problem that was raised initially was not that of UDF and of allowing both behavior. It's a matter of people being confused by the behavior of a non-UDF function, now(), and suggesting it should be changed. The Hive idea is interesting I guess, and we can switch to discussing that, but it's a different problem really and I'm not a fond of derailing threads. I will just note though that if we're not talking about a confusion issue but rather how to get a timeuuid to be fixed within a statement, then there is much much more trivial solution: generate it client side. The `now()` function is a small convenience but there is nothing you cannot do without it client side, and that actually basically stands for almost any use of (non aggregate) function in Cassandra currently. > > > "Food for thought: Hive's UDFs introduced an annotation > @UDFType(deterministic = false) > > http://dmtolpeko.com/2014/10/15/invoking-stateful-udf-at-map > -and-reduce-side-in-hive/ > > The effect is the query planner can see when such a UDF is in use and > determine the value once at the start of a very long query." > > Essentially hive had a similar if not identical problem, during a long > running distributed process like map/reduce some users wanted the semantics > of: > > 1) Each call should have a new timestamps > > While other users wanted the semantics of: > > 2) Each call should generate the same timestamp > > The solution implemented was to add an annotation to udf such that the > query planner would pick up the annotation and act accordingly. > > (Here is a related issue https://issues.apache.org/jira/browse/HIVE-1986 > > As a result you can essentially implement two UDFS > > @UDFType(deterministic = false) > public class UDFNow > > and for the other people > > @UDFType(deterministic = true) > public class UDFNowOnce extends UDFNow > > Both user cases are met in a sensible way. >