我想编写一个依赖于传递给脚本的参数的配置单元查询。这些参数可能要求我从未知数量的列中进行选择。 我想要做的是让传递给脚本的一个参数是一个包含列名的字符串,由一些正则表达式分隔,可能是一个逗号。 我一直在尝试使用拆分UDF将简单字符串转换为数组,并在查询中使用结果数组。 基本上,给定 A = “美孚,酒吧” 我想得到 B = [Foo,Bar] 然后能够从tablename执行查询,例如SELECT B [0]; 澄清:我正在尝试拆分我传入的变量。
编辑: 我理所当然地意识到我不会这样做 - 有没有办法构建一个hive查询并将其传入?
EDIT2: 使用-e标志。不是最好的做法,但我看不到另一种方法。也许利用猪将是一个更好的选择。
答案 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, 恐龙