2

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

编辑:我已经意识到理想情况下我不会这样做 - 有什么方法可以构建一个配置单元查询并将其传递进去?

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

4

1 回答 1

2

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

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

使用 CLI 运行此操作时,只需传递您要选择的列列表,如下所示

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

HTH,迪诺

于 2013-06-21T06:03:53.773 回答