我正在尝试合并2个数据集,例如A和B.数据集A有一个变量"Flag",它取2个值.我试图根据"flag"变量合并2个数据集,而不是将两个数据合并在一起.
合并代码如下:
create table new_data as
select a.*,b.y
from A as a left join B as b
on a.x=b.x
Run Code Online (Sandbox Code Playgroud)
由于我通过CLI运行Hive代码,我通过以下命令调用它
hive -f new_data.hql
Run Code Online (Sandbox Code Playgroud)
我正在调用基于"Flag"变量合并数据的代码的循环部分如下:
for flag in 1 2;
do
hive -hivevar flag=$flag -f new_data.hql
done
Run Code Online (Sandbox Code Playgroud)
我将上面的代码放在另一个".hql"文件中,因为它调用它:
hive -f loop_data.hql
Run Code Online (Sandbox Code Playgroud)
但这是错误的投掷.
无法识别'for''flag''附近的输入''
任何人都可以告诉我我在哪里弄错了.
谢谢!
文件名:loop_data.sh
for flag in 1 2;
do
hive -hivevar flag=$flag -f new_data.hql
done
Run Code Online (Sandbox Code Playgroud)
并执行以下脚本:
sh loop_data.sh
Run Code Online (Sandbox Code Playgroud)
DDL:create_new_data.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;
Run Code Online (Sandbox Code Playgroud)
DML:insert_new_data.hql
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}
Run Code Online (Sandbox Code Playgroud)
并更新你的shell脚本,如:
文件名:loop_new_data.sh
# 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
Run Code Online (Sandbox Code Playgroud)
并执行它:
sh loop_new_data.sh
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多信息,请告诉我.
| 归档时间: |
|
| 查看次数: |
23244 次 |
| 最近记录: |