【问题标题】:How to call a user defined function in Hive?如何在 Hive 中调用用户定义的函数?
【发布时间】:2013-06-18 21:14:14
【问题描述】:

我想编写一个依赖于传递到脚本中的参数的配置单元查询。这些参数可能需要我从未知数量的列中进行选择。 我想要做的是让传递给脚本的参数之一是包含列名的字符串,由一些正则表达式分隔,可能是逗号。 我一直在努力尝试使用拆分 UDF 将简单字符串转换为数组,并在查询中使用结果数组。 基本上,给定 A="Foo,酒吧" 我想得到 B=[Foo, 酒吧] 然后可以执行查询,例如 SELECT B[0] from tablename; 澄清:我正在尝试拆分我传入的变量。

编辑: 我已经意识到理想情况下我不会这样做 - 有没有办法构造一个配置单元查询并将其传递?

编辑2: 使用 -e 标志。不是真正的最佳实践,但我看不出另一种方法来做到这一点。也许使用猪会是一个更好的选择。

【问题讨论】:

    标签: sql hive user-defined-functions hiveql


    【解决方案1】:

    为什么不直接传递要选择的列列表。例如这个脚本有一个变量 COLUMNS

    INSERT OVERWRITE DIRECTORY 's3://dummy/dummy/'
    select ${COLUMNS} from table;
    

    使用 CLI 运行时,只需像这样传递您想要选择的列列表

    $> hive -f <path to script> -d COLUMNS=col1,col2,col3
    

    HTH, 迪诺

    【讨论】:

    • 这很有道理 - 看起来我有一些重构要做!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多