s****h 发帖数: 3979 | 1 question about Hive parameter
Support we have some parameters as:
set nyear = '2014';
set nmonth = '10';
set nday = '17';
We generate a new parameter as:
set newdatestring = concat('/foldername/', ${hiveconf:nyear}, '/', ${
hiveconf:nmonth}, '/', ${hiveconf:nday},'/');
Comparing 2 queries
q1:
select ${hiveconf:newdatestring};
q1 output:
/foldername/2014/10/17/
q2:
select "${hiveconf:newdatestring}";
q2 output:
concat('/foldername/', '2014', '/', '10', '/', '17','/')
The question: is there any setting so that the output of the query 2 is also
'2014/10/17/'?
Why I ask this question?
The real query we want to run is similar to:
create external table tableone( ... ) LOCATION ${hiveconf:newdatestring};
I think the ${hiveconf:newdatestring} in this query is the output of q2
instead of q1.
Thanks for your help. |
d*******3 发帖数: 58 | 2 参数变量放在脚本里处理,再传给hive 执行该多方便
#!/bin/bash
nyear='2014'
nmonth='10'
nday='17'
hql="
create external table tableone
(
id int
) LOCATION '$LOCATION'
"
hive -e "$hql" |
d*******3 发帖数: 58 | 3 写漏了
LOCATION="/foldername/$nyear/$nmonth/$nday" |
s****h 发帖数: 3979 | 4 不行就只能这样了。
关键是有好几个不同的foldername(tables)。这样搞太麻烦。
date也可能有好多,比如连续30天。
本来是打算传个终止日期,和天数就可以了。
【在 d*******3 的大作中提到】 : 参数变量放在脚本里处理,再传给hive 执行该多方便 : #!/bin/bash : nyear='2014' : nmonth='10' : nday='17' : hql=" : create external table tableone : ( : id int : ) LOCATION '$LOCATION'
|
d*******3 发帖数: 58 | 5
1.无论你在hive 里搞还是在脚本呢里搞,逻辑上是一样的。你在hiveconf里搞绝对不
会比在脚本里搞简单,hive 本身只提供类sql 的查询语言,逻辑控制没有脚本灵活方
便。
2.脚本里传个起始/终止时间和天数,构造下foldername 传给hive 执行是恨easy 的一
件事情。
【在 s****h 的大作中提到】 : 不行就只能这样了。 : 关键是有好几个不同的foldername(tables)。这样搞太麻烦。 : date也可能有好多,比如连续30天。 : 本来是打算传个终止日期,和天数就可以了。
|
s****h 发帖数: 3979 | 6 在shellscript里搞,就要传很多foldername进hive。
而且,如果要按date来patition,不可能几百个patition的location一个一个传进去吧。
如果hive里不能解决,那我估计会简单用python写个生成hive query的东西
【在 d*******3 的大作中提到】 : : 1.无论你在hive 里搞还是在脚本呢里搞,逻辑上是一样的。你在hiveconf里搞绝对不 : 会比在脚本里搞简单,hive 本身只提供类sql 的查询语言,逻辑控制没有脚本灵活方 : 便。 : 2.脚本里传个起始/终止时间和天数,构造下foldername 传给hive 执行是恨easy 的一 : 件事情。
|