You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hivemall.apache.org by "Makoto Yui (Jira)" <ji...@apache.org> on 2021/04/01 07:59:00 UTC
[jira] [Closed] (HIVEMALL-302) Is there any way to let the function
accept string value instead of const string value
[ https://issues.apache.org/jira/browse/HIVEMALL-302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Makoto Yui closed HIVEMALL-302.
-------------------------------
Resolution: Not A Bug
> Is there any way to let the function accept string value instead of const string value
> --------------------------------------------------------------------------------------
>
> Key: HIVEMALL-302
> URL: https://issues.apache.org/jira/browse/HIVEMALL-302
> Project: Hivemall
> Issue Type: Wish
> Affects Versions: 0.6.0
> Reporter: Bob
> Assignee: Makoto Yui
> Priority: Minor
>
>
> I am using hivemall in Aliyun MaxCompute environment and get below error message once I was running the SQL from [http://hivemall.incubator.apache.org/userguide/recommend/movielens_cf.html]
>
> {code:java}
> org.apache.hadoop.hive.ql.exec.UDFArgumentException: argument must be a constant value: string
> at hivemall.utils.hadoop.HiveUtils.getConstValue(HiveUtils.java:587)
> at hivemall.utils.hadoop.HiveUtils.getConstString(HiveUtils.java:661)
> at hivemall.knn.similarity.DIMSUMMapperUDTF.processOptions(DIMSUMMapperUDTF.java:100)
> at hivemall.knn.similarity.DIMSUMMapperUDTF.initialize(DIMSUMMapperUDTF.java:135)
> at org.apache.hadoop.hive.ql.udf.generic.GenericUDTF.initialize(GenericUDTF.java:56)
> at com.aliyun.odps.compiler.hive.adapter.Adapter.resolveGenericUdtf(Adapter.java:92)
> at com.aliyun.odps.compiler.hive.adapter.Adapter.invokeResolve(Adapter.java:38)
> at com.aliyun.odps.compiler.function.udf.hive.java.HiveJavaUdfResolveSandbox.invokeResolve(HiveJavaUdfResolveSandbox.java:20)
> at com.aliyun.odps.compiler.function.udf.JavaUdfResolveSandbox$MainClass.main(JavaUdfResolveSandbox.java:237)
> {code}
>
> Related SQL statements are:
>
> {code:java}
> with movie_magnitude as ( -- compute magnitude of each movie vector
> select
> to_map(j, mag) as mags,
> 1 as con
> from (
> select
> movieid as j,
> l2_norm(rating) as mag
> from
> training
> group by
> movieid
> ) t0
> ),
> movie_features as (
> select
> userid as i,
> 1 as con,
> collect_list(
> feature(movieid, rating)
> ) as feature_vector
> from
> training
> group by
> userid
> )
> select
> dimsum_mapper(f.feature_vector, m.mags, "-disable_symmetric_output -threshold 0.1")
> as (movieid, other, s)
> from
> movie_features f
> left outer join movie_magnitude m on f.con = m.con
> ;
> {code}
>
>
> As I have use the same SQL statement in pure Hive environment and it works fine, so I have to say this is not the problem of hivemall. But I still wonder if there is some way to disable the validation of const value or force the hive to pass the const value. Otherwise I have to update the HiveUtils.java to handle this, and I do not think this should be the suitable way.
> Thanks a lot for your time and please kindly let me know if any configs with hive or hivemall could make this happen. I have found the same error under [HIVEMALL-255|https://issues.apache.org/jira/browse/HIVEMALL-255] but it is closed for no following responses.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)