hive在运行时从文本传递参数时不会插入行

时间:2016-10-27 13:08:07

标签: parameters hive

我试图通过这样做将参数从linux上的文本文件传递到配置单元脚本:

文本文件的内容是:

$ emp_code =' PRD10' $ location ='美国'

我需要使用这些变量传递给这个hive sql。脚本的内容是:

!文件的位置/ empdetails.txt;

从empinfo插入emp_pay_detail作为select *,其中empcode =' $ {hiveconf:emp_code}'和elocation =' $ {hiveconf:location}';

这个想法是从linux

的文本文件中传递不同的参数

我尝试使用以下命令运行它:

hive -hiveconf \ temp_code -hiveconf location -f employeedet.sql

脚本运行但不插入任何行

1 个答案:

答案 0 :(得分:0)

您可以创建一个配置单指令输入文件:

set emp_code=PRD10;
set location=USA;

使用hive -i input.txt -f employeedet.sql

加载它

如果您想指定多个地点:set location=USA,UK,则需要将查询中的条件更改为:array_contains(split('${hiveconf:location}',','), elocation)

完整查询:

insert into emp_pay_detail as select * from empinfo where 
  array_contains(split('${hiveconf:emp_code}',','), empcode) and
  array_contains(split('${hiveconf:location}',','), elocation);