我试图通过这样做将参数从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
脚本运行但不插入任何行
答案 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);