You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Niklaus Xiao (JIRA)" <ji...@apache.org> on 2016/09/02 08:39:20 UTC
[jira] [Commented] (HIVE-14694) UDF rand throws NPE when input data
is NULL
[ https://issues.apache.org/jira/browse/HIVE-14694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15457950#comment-15457950 ]
Niklaus Xiao commented on HIVE-14694:
-------------------------------------
I tried in MySQL, when input data is null, MySQL will use 0 as the seed
{code}
mysql> select rand(0);
+---------------------+
| rand(0) |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set (0.00 sec)
mysql> select rand(NULL);
+---------------------+
| rand(NULL) |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set (0.00 sec)
{code}
So I use 0 as seed when input data is null in the patch, cc [~ashutoshc]
> UDF rand throws NPE when input data is NULL
> -------------------------------------------
>
> Key: HIVE-14694
> URL: https://issues.apache.org/jira/browse/HIVE-14694
> Project: Hive
> Issue Type: Bug
> Components: UDF
> Affects Versions: 2.2.0
> Reporter: Niklaus Xiao
> Assignee: Niklaus Xiao
> Priority: Minor
> Attachments: HIVE-14694.1.patch
>
>
> When use {{rand}} function with null, HiveServer throws NPE:
> {code}
> 0: jdbc:hive2://10.64.35.144:21066/> desc foo1;
> +-----------+------------+----------+--+
> | col_name | data_type | comment |
> +-----------+------------+----------+--+
> | c1 | bigint | |
> +-----------+------------+----------+--+
> 1 row selected (0.075 seconds)
> 0: jdbc:hive2://10.64.35.144:21066/> select * from foo1;
> +----------+--+
> | foo1.c1 |
> +----------+--+
> | NULL |
> | 1 |
> | 2 |
> +----------+--+
> 3 rows selected (0.124 seconds)
> 0: jdbc:hive2://10.64.35.144:21066/> select rand(c1) from foo1;
> Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to execute method public org.apache.hadoop.hive.serde2.io.DoubleWritable org.apache.hadoop.hive.ql.udf.UDFRand.evaluate(org.apache.hadoop.io.LongWritable) on object org.apache.hadoop.hive.ql.udf.UDFRand@37a2b47b of class org.apache.hadoop.hive.ql.udf.UDFRand with arguments {null} of size 1 (state=,code=0)
> {code}
> Stack trace:
> {code}
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.hive.ql.exec.FunctionRegistry.invoke(FunctionRegistry.java:1010)
> ... 36 more
> Caused by: java.lang.NullPointerException
> at org.apache.hadoop.hive.ql.udf.UDFRand.evaluate(UDFRand.java:57)
> ... 40 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)