Grokbase Groups Hive user July 2010
FAQ
Hi,

I wanted to implement a UDF which takes the entire row of input as
argument. Unfortunately when I call it using select myudf(*) from my
table, I get :

FAILED: Parse Error: line 1:16 mismatched input '*' expecting ) in
function specification



Is this not allowed?



Thanks,

Pradeep

Search Discussions

  • Arvind Prabhakar at Jul 8, 2010 at 12:26 am
    Hi Pradeep,

    See HIVE-287 <https://issues.apache.org/jira/browse/HIVE-287>. The most
    recent patch supplied with this Jira allows you to create UDAFs that support
    the FUNCTION(STAR) syntax. You can apply this patch to your local working
    copy and see if that addresses your problem.

    Also feel free to ask questions regarding anything that this patch provides.

    Arvind
    On Wed, Jul 7, 2010 at 4:35 PM, Pradeep Kamath wrote:

    Hi,

    I wanted to implement a UDF which takes the entire row of input as
    argument. Unfortunately when I call it using select myudf(*) from my table,
    I get :

    FAILED: Parse Error: line 1:16 mismatched input '*' expecting ) in function
    specification



    Is this not allowed?



    Thanks,

    Pradeep
  • Pradeep Kamath at Jul 8, 2010 at 12:48 am
    Hi Arvind,

    Before I dig deeper with the patch on that jira, I was wondering if it
    is relevant that what I am trying is not an aggregate function (no group
    by involved). I am writing a row level UDF but would like all fields in
    the row to be presented to the udf. So my query literally is:

    "select myudf(*) from mytable;"



    Do you think the patch might address my use case even though my UDF is
    not a UDAF?



    Thanks,

    Pradeep



    ________________________________

    From: Arvind Prabhakar
    Sent: Wednesday, July 07, 2010 5:26 PM
    To: hive-user@hadoop.apache.org
    Subject: Re: UDF which takes entire row as arg



    Hi Pradeep,



    See HIVE-287 <https://issues.apache.org/jira/browse/HIVE-287> . The most
    recent patch supplied with this Jira allows you to create UDAFs that
    support the FUNCTION(STAR) syntax. You can apply this patch to your
    local working copy and see if that addresses your problem.



    Also feel free to ask questions regarding anything that this patch
    provides.



    Arvind



    On Wed, Jul 7, 2010 at 4:35 PM, Pradeep Kamath wrote:

    Hi,

    I wanted to implement a UDF which takes the entire row of input as
    argument. Unfortunately when I call it using select myudf(*) from my
    table, I get :

    FAILED: Parse Error: line 1:16 mismatched input '*' expecting ) in
    function specification



    Is this not allowed?



    Thanks,

    Pradeep
  • Edward Capriolo at Jul 8, 2010 at 3:33 am

    On Wed, Jul 7, 2010 at 8:44 PM, Pradeep Kamath wrote:
    Hi Arvind,

    Before I dig deeper with the patch on that jira, I was wondering if it is
    relevant that what I am trying is not an aggregate function (no group by
    involved). I am writing a row level UDF but would like all fields in the row
    to be presented to the udf. So my query literally is:

    “select myudf(*) from mytable;”



    Do you think the patch might address my use case even though my UDF is not a
    UDAF?



    Thanks,

    Pradeep



    ________________________________

    From: Arvind Prabhakar
    Sent: Wednesday, July 07, 2010 5:26 PM
    To: hive-user@hadoop.apache.org
    Subject: Re: UDF which takes entire row as arg



    Hi Pradeep,



    See HIVE-287. The most recent patch supplied with this Jira allows you to
    create UDAFs that support the  FUNCTION(STAR) syntax. You can apply this
    patch to your local working copy and see if that addresses your problem.



    Also feel free to ask questions regarding anything that this patch provides.



    Arvind



    On Wed, Jul 7, 2010 at 4:35 PM, Pradeep Kamath wrote:

    Hi,

    I wanted to implement a UDF which takes the entire row of input as
    argument. Unfortunately when I call it using select myudf(*) from my table,
    I get :

    FAILED: Parse Error: line 1:16 mismatched input '*' expecting ) in function
    specification



    Is this not allowed?



    Thanks,

    Pradeep
    You could write a generic UDF since they accept arbitrary signature,
    but you would have to pass each column specifically (no * support)
  • Zheng Shao at Jul 8, 2010 at 4:16 am
    Yes. Even a normal (non-generic) UDF might work if all columns can be
    converted to the same type. UDF can accept variable-length of
    arguments of the same type.

    it will be a great addition to let UDF/UDAF handle * (as well as `regex`).
    The change is all compile-time, and is relatively simple.

    Zheng
    On Wed, Jul 7, 2010 at 8:31 PM, Edward Capriolo wrote:

    You could write a generic UDF since they accept arbitrary signature,
    but you would have to pass each column specifically (no * support)


    --
    Yours,
    Zheng
    http://www.linkedin.com/in/zshao
  • John Sichi at Jul 8, 2010 at 7:51 pm
    As Zheng mentioned, I think a separate JIRA issue needs to be created for the SemanticAnalyzer star expansions for both UDF and UDAF; see the comment I just added on HIVE-287.

    JVS

    On Jul 7, 2010, at 5:44 PM, Pradeep Kamath wrote:

    Hi Arvind,
    Before I dig deeper with the patch on that jira, I was wondering if it is relevant that what I am trying is not an aggregate function (no group by involved). I am writing a row level UDF but would like all fields in the row to be presented to the udf. So my query literally is:
    “select myudf(*) from mytable;”

    Do you think the patch might address my use case even though my UDF is not a UDAF?

    Thanks,
    Pradeep

    ________________________________
    From: Arvind Prabhakar
    Sent: Wednesday, July 07, 2010 5:26 PM
    To: hive-user@hadoop.apache.org
    Subject: Re: UDF which takes entire row as arg

    Hi Pradeep,

    See HIVE-287<https://issues.apache.org/jira/browse/HIVE-287>. The most recent patch supplied with this Jira allows you to create UDAFs that support the FUNCTION(STAR) syntax. You can apply this patch to your local working copy and see if that addresses your problem.

    Also feel free to ask questions regarding anything that this patch provides.

    Arvind

    On Wed, Jul 7, 2010 at 4:35 PM, Pradeep Kamath wrote:
    Hi,
    I wanted to implement a UDF which takes the entire row of input as argument. Unfortunately when I call it using select myudf(*) from my table, I get :
    FAILED: Parse Error: line 1:16 mismatched input '*' expecting ) in function specification

    Is this not allowed?

    Thanks,
    Pradeep

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupuser @
categorieshive, hadoop
postedJul 7, '10 at 11:39p
activeJul 8, '10 at 7:51p
posts6
users5
websitehive.apache.org

People

Translate

site design / logo © 2021 Grokbase