[ 
https://issues.apache.org/jira/browse/PIG-1427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12872314#action_12872314
 ] 

Dmitriy V. Ryaboy commented on PIG-1427:
----------------------------------------

bq. You didnt pay heed to my request for incrementing counter when udf times 
out or throws an exception  I think that will be pretty useful for user to know 
how many faulty records there are in the dataset which can't be processed by 
the UDF.

Right, I forgot to comment on that --  I think the counters no longer being 
available is a separate issue; will file a ticket for that, and when the fix 
goes in, will use that here. 

bq. In the getDefaultValue() there seems to be a inconsistency among different 
if statements. I guess you need to make a distinction between Integer[] and 
Integer return type and then return appropriate return value.

Whoops, good catch. Those are all supposed to be [0]. So, the trick there is 
that you can't have null values as defaults for annotation properties, but you 
can have empty arrays; and the first element of an array can be populated by 
simply setting nameOfArray = "foo" (the first element becomes "foo").  So I am 
using that here. 

bq. Doing svn co; patch -p0 < monitoredUDF.patch; ant jar results in build 
failure. It seems ivy is not pulling guava lib.

Yeah I spent 2 hours wrestling with maven last night until I convinced myself 
that the guava maven deploy is broken. We need to drop the jar in lib/ for now. 
See here for reference: 
http://code.google.com/p/guava-libraries/issues/detail?id=354

bq. Since its user facing new interface, having stability/visibility tag would 
really be useful.

Will do.

bq. Since it spawns a new thread for every exec() call, I assume it will have 
some overhead. If you have done some comparison or have numbers for that, it 
will be great if you can share that. 

Simple enough. To measure the overhead, I created two equivalent UDFs that do 
nothing (they fetch the current time, just to create an illusion of work and 
avoid potential java optimizations); one is monitored, the other unmonitored. I 
then called them in loops of varying number of repetition.  I first warmed up 
the JVM by running through the procedures without timing them, and then 
repeated the same, this time grabbing the time at the beginning and end of the 
loop. As you can see, there is almost no overhead -- it almost looks like we 
should default to monitoring, it's so cheap.

{noformat}
Warming up.
Warmed up. Timing.
Reps: 1000 monitored: 0 unmonitored: 0
Reps: 10000 monitored: 1 unmonitored: 1
Reps: 100000 monitored: 12 unmonitored: 10
Reps: 1000000 monitored: 60 unmonitored: 62
Reps: 10000000 monitored: 587 unmonitored: 573
Reps: 1000 monitored: 0 unmonitored: 0
Reps: 10000 monitored: 0 unmonitored: 1
Reps: 100000 monitored: 6 unmonitored: 5
Reps: 1000000 monitored: 73 unmonitored: 57
Reps: 10000000 monitored: 574 unmonitored: 583
Reps: 1000 monitored: 0 unmonitored: 0
Reps: 10000 monitored: 1 unmonitored: 0
Reps: 100000 monitored: 6 unmonitored: 5
Reps: 1000000 monitored: 57 unmonitored: 58
Reps: 10000000 monitored: 594 unmonitored: 628
Reps: 1000 monitored: 0 unmonitored: 0
Reps: 10000 monitored: 1 unmonitored: 1
Reps: 100000 monitored: 6 unmonitored: 5
Reps: 1000000 monitored: 58 unmonitored: 62
Reps: 10000000 monitored: 594 unmonitored: 591
Reps: 1000 monitored: 0 unmonitored: 0
Reps: 10000 monitored: 0 unmonitored: 1
Reps: 100000 monitored: 6 unmonitored: 5
Reps: 1000000 monitored: 58 unmonitored: 69
Reps: 10000000 monitored: 587 unmonitored: 586
{noformat}



> Monitor and kill runaway UDFs
> -----------------------------
>
>                 Key: PIG-1427
>                 URL: https://issues.apache.org/jira/browse/PIG-1427
>             Project: Pig
>          Issue Type: New Feature
>    Affects Versions: 0.8.0
>            Reporter: Dmitriy V. Ryaboy
>            Assignee: Dmitriy V. Ryaboy
>         Attachments: monitoredUdf.patch, monitoredUdf.patch
>
>
> As a safety measure, it is sometimes useful to monitor UDFs as they execute. 
> It is often preferable to return null or some other default value instead of 
> timing out a runaway evaluation and killing a job. We have in the past seen 
> complex regular expressions lead to job failures due to just half a dozen 
> (out of millions) particularly obnoxious strings.
> It would be great to give Pig users a lightweight way of enabling UDF 
> monitoring.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to