2013-06-18 41 views
2

我想编写一个依赖传入脚本的参数的配置单元查询。这些参数可能需要我从未知数量的列中进行选择。 我想要做的是传递给脚本的参数之一是一个包含列名称的字符串,由一些正则表达式分隔,可能是一个逗号。 我一直在拉我的头发,试图将简单的字符串转换为使用分割UDF的数组,并在查询中使用结果数组。 基本上,给出 A =“Foo,Bar” 我想要得到 B = [Foo,Bar] 然后就能够执行一个查询,如SELECTname [0] from tablename; 一个澄清:我试图分裂我在传递一个变量如何在Hive中调用用户定义的函数?

编辑: 我已经意识到我的理想不会做这个 - 有什么办法来构造一个蜂巢查询,并将其传递在?

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

回答

2

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

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

运行此使用CLI只是传递要选择这样

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

HTH列的列表, 迪诺

+0

这是有道理的 - 外观就像我有一些重构要做!谢谢。 – abu

+0

请投票:) –

+0

我不能:(没有足够的点呢。 – abu

相关问题