apache spark - How do I register a function to sqlContext UDF in scala? -
i have method called getage(timestamp:long) , want register sql function.
i have
sqlcontext.udf.register("getage",getage) but telling me need arguments or use _ afterwards, tried using _ gives me error. how register argument. new scala have no idea how this.
sqlcontext.udf.register("getage",getage) should be:
sqlcontext.udf.register("getage",getage _) the underscore (must have space in between function , underscore) turns function partially applied function can passed in registration.
more explanation
when invoke function, have pass in required parameters. if don't, compiler complain.
we can ask function value, can pass in required parameters @ later time. how use underscore.
getage means run getage - example, def getage = 10 giving 10. don't want result, want function. moreover, definition, compiler sees getage requires parameter, , complains 1 wasn't given.
what want here pass getage function value. tell scala, don't know parameter yet, want function value , we'll supply required parameter @ later time. so, use getage _.
assuming signature getage is:
getage(l: long): long = <function> getage _ becomes anonymous function:
long => long = <function> which means needs parameter of type long , result of invoking yield value of type long.
Comments
Post a Comment