使用Hiveql进行循环
我试图合并2个数据集,比如A和B。数据集A有一个变量“Flag”,它接受2个值。我没有将这两个数据合并在一起,而是尝试根据“flag”变量合并两个数据集 合并代码如下所示:使用Hiveql进行循环,hive,hiveql,Hive,Hiveql,我试图合并2个数据集,比如A和B。数据集A有一个变量“Flag”,它接受2个值。我没有将这两个数据合并在一起,而是尝试根据“flag”变量合并两个数据集 合并代码如下所示: create table new_data as select a.*,b.y from A as a left join B as b on a.x=b.x for flag in 1 2; do hive -hivevar flag=$flag -f new_data.hql done 因为我是通过CLI运行配置
create table new_data as
select a.*,b.y
from A as a left join B as b
on a.x=b.x
for flag in 1 2;
do
hive -hivevar flag=$flag -f new_data.hql
done
因为我是通过CLI运行配置单元代码,所以我通过以下命令调用它
hive -f new_data.hql
我调用代码的循环部分是基于“Flag”变量合并数据,如下所示:
create table new_data as
select a.*,b.y
from A as a left join B as b
on a.x=b.x
for flag in 1 2;
do
hive -hivevar flag=$flag -f new_data.hql
done
我将上述代码放在另一个“.hql”文件asn中调用它:
hive -f loop_data.hql
但这是一个错误
无法识别“”中“”标志“”的“”附近的输入
谁能告诉我哪里出错了
谢谢
for flag in 1 2;
do
hive -hivevar flag=$flag -f new_data.hql
done
# Create table
hive -f create_new_data.hql
# Insert data
for flag in 1 2;
do
hive -hiveconf flag=$flag -f insert_new_data.hql
done
然后执行如下脚本:
sh loop_data.sh
create table new_data as
select
a.*,
b.y
from
A as a left join
B as b on
a.x = b.x
where
1 = 0;
insert into new_data
select
a.*,
b.y
from
A as a left join
B as b on
a.x = b.x
where
flag = ${hiveconf:flag}
DML:插入新数据。hql
create table new_data as
select
a.*,
b.y
from
A as a left join
B as b on
a.x = b.x
where
1 = 0;
insert into new_data
select
a.*,
b.y
from
A as a left join
B as b on
a.x = b.x
where
flag = ${hiveconf:flag}
并更新shell脚本,如下所示:
sh loop_data.sh
文件名:loop\u new\u data.sh
for flag in 1 2;
do
hive -hivevar flag=$flag -f new_data.hql
done
# Create table
hive -f create_new_data.hql
# Insert data
for flag in 1 2;
do
hive -hiveconf flag=$flag -f insert_new_data.hql
done
然后像这样执行它:
sh loop_new_data.sh
如果需要更多信息,请告诉我。循环代码不是配置单元查询/脚本。配置单元-f只能运行配置单元查询。在shell脚本中使用循环。@KSNidhin:非常感谢您的评论。我正在通过putty运行配置单元代码。你能解释一下shell脚本是什么意思吗?我在技术上有点新手。flag变量有2个值1和2,对吗?这是配置单元查询中的筛选条件,对吗?@KSNidhin:你说得对。标志有2个变量,它是筛选条件。其思想是按标志分解数据并合并每个分区的数据。然后,您可以在配置单元查询中添加筛选条件,并在查询本身中进行合并,然后单独使用配置单元-f运行查询。感谢Ambish的回复!我怎么能在蜂箱里用呢shell@sahildesai请详细说明您的问题。上面的解决方案是针对命令行的,但我在hive Shell上使用hive查询。尽管@Beta的问题已经解决,但该主题仍然没有答案:如何在hive中循环?不是从壳里而是直接在蜂箱里?