如何在Hive中调用用户定义的函数?

时间:2013-06-18 21:14:14

标签: sql hive user-defined-functions hiveql

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

编辑: 我理所当然地意识到我不会这样做 - 有没有办法构建一个hive查询并将其传入?

EDIT2: 使用-e标志。不是最好的做法,但我看不到另一种方法。也许利用猪将是一个更好的选择。

1 个答案:

答案 0 :(得分:2)

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

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

使用CLI运行时,只需传递要选择的列列表,如此

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

HTH, 恐龙